總結(jié):?
這里提供三種方法:
var arr=[] var arr2={} 1、constructor: 數(shù)組的constructor是function Array(){}; 對象的constructor是function Object(){} 2、instanceof: 數(shù)組 instanceof Array:為true; 對象 instanceof Array: 為false; 3、Object.prototype.toString.call([數(shù)組]) 返回的字符串可以判斷是否是數(shù)組 //正常使用toString 方法是 obj.toString;toString方法里面的this,誰調(diào)用的就是誰 Object.prototype.toString=function (){ //識別 this //返回相應的結(jié)果 } obj.toString(); //obj.toString();這里obj調(diào)用的this指向的就是obj,所以想要改變this指向就可以使用call函數(shù)
?詳解:
先了解一些概念:
對象的查詢屬性的兩種方法:
var obj = {
name: '張三',
age: 18,
sex: 'man',
testName1: '1111',
testName2: '22222',
testName3: '333333'
}
1:obj.name
其實第一種和第二種是一樣的,只不過第一種在其內(nèi)部做了隱式轉(zhuǎn)換;
obj.name----->在內(nèi)部做了obj['name']的操作
所以也就是第一中的速度會比第二種方法更慢
2:obj['name']
對象名加[], 然后加屬性名字的字符串形式:obj['age'];
使用字符串的形式可以進行字符串拼接,更加靈活;obj['testName'+num],根據(jù)num的值;可以得到不同的值
如果是變量則不需要加引號:obj[param], param是變量可以是name,也可以是age
對象的枚舉:
對象枚舉共有四個重要的方法
1、for in 循環(huán)遍歷
2、hasOwnProperty
3、in
4、instanceof
for in 用法
var obj = {
name: 'wq',
age: 12,
sex: 'man'
}
1、
for (const objKey in obj) {
console.log(objKey)
}
//打印的是obj的屬性名
2、
for (const objKey in obj) {
console.log(obj.objKey)
}
//打印的全部是undefined;為什么呢
//上面說了obj.objKey相當于內(nèi)部隱式的使用了obj['objKey']去獲??;
//obj里面沒有objKey這個屬性所有打印的全部是undefined;所以不能使用這種方式
3、
for (const objKey in obj) {
console.log(obj[objKey])
}
//這樣才能打印出屬性的值,這里objKey相當于一個變量
hasOwnProperty用法
var obj = {
name: 'wq',
age: 12,
sex: 'man',
__proto__:{
last:'a'
}
}
Object.prototype.abc=123;
for (const objKey in obj) {
console.log(obj[objKey])
}
打印結(jié)果:
?????????你會發(fā)現(xiàn)打印出來的東西里面既然會有?原型上的屬性,本來這個原型上的屬性你是不想打印的,結(jié)果有,那該怎么辦?
????????這里就可以使用hasOwnProperty方法,這方法可以判斷該屬性是你自己的還是原型上的;返回值是Boolean值??梢允褂靡韵麓a:
這里就可以使用hasOwnProperty方法,這方法可以判斷該屬性是你自己的還是原型上的;返回值是Boolean值
for (const objKey in obj) {
if(obj.hasOwnProperty(objKey)){
console.log(obj[objKey])
}
}
instanceof用法:A instanceof B
官方解釋: A對象 是不是 B構(gòu)造函數(shù)構(gòu)造出來的
自己理解:看A對象的原型鏈上 有沒有B的原型,既A是不是B的孩子,或者孫子或者重孫
?文章來源:http://www.zghlxwxcb.cn/news/detail-663338.htmlfunction Person() {} var obj={} var person = new Person(); //person instanceof Person ?person是不是由Person構(gòu)造出來的
文章來源地址http://www.zghlxwxcb.cn/news/detail-663338.html
到了這里,關(guān)于JS中如何區(qū)分變量是數(shù)組還是對象的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!