国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JS中如何區(qū)分變量是數(shù)組還是對象

這篇具有很好參考價值的文章主要介紹了JS中如何區(qū)分變量是數(shù)組還是對象。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

總結(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ù)

JS中如何區(qū)分變量是數(shù)組還是對象,前端,javascript,前端,typescript

?詳解:

先了解一些概念:

對象的查詢屬性的兩種方法:

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é)果:JS中如何區(qū)分變量是數(shù)組還是對象,前端,javascript,前端,typescript

?????????你會發(fā)現(xiàn)打印出來的東西里面既然會有?原型上的屬性,本來這個原型上的屬性你是不想打印的,結(jié)果有,那該怎么辦?

????????這里就可以使用hasOwnProperty方法,這方法可以判斷該屬性是你自己的還是原型上的;返回值是Boolean值??梢允褂靡韵麓a:

這里就可以使用hasOwnProperty方法,這方法可以判斷該屬性是你自己的還是原型上的;返回值是Boolean值
for (const objKey in obj) {
    if(obj.hasOwnProperty(objKey)){
        console.log(obj[objKey])
    }
}

JS中如何區(qū)分變量是數(shù)組還是對象,前端,javascript,前端,typescript

instanceof用法:A instanceof B

官方解釋: A對象 是不是 B構(gòu)造函數(shù)構(gòu)造出來的
自己理解:看A對象的原型鏈上 有沒有B的原型,既A是不是B的孩子,或者孫子或者重孫
?

function Person() {}
var obj={}
var person = new Person();
//person instanceof Person  ?person是不是由Person構(gòu)造出來的

JS中如何區(qū)分變量是數(shù)組還是對象,前端,javascript,前端,typescript文章來源地址http://www.zghlxwxcb.cn/news/detail-663338.html

到了這里,關(guān)于JS中如何區(qū)分變量是數(shù)組還是對象的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包