最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript遍歷對(duì)象的五種方式實(shí)例代碼

 更新時(shí)間:2021年10月24日 11:30:08   作者:照物華  
在我們?nèi)粘9ぷ鬟^(guò)程中,我們對(duì)于javaScript遍歷對(duì)象、數(shù)組的操作是十分的頻繁的,這篇文章主要給大家介紹了關(guān)于javascript遍歷對(duì)象的五種方式,需要的朋友可以參考下

準(zhǔn)備

先來(lái)準(zhǔn)備一個(gè)測(cè)試對(duì)象obj。

代碼清單1

var notEnum = Symbol("繼承不可枚舉symbol");
var proto = {
    [Symbol("繼承可枚舉symbol")]: "繼承可枚舉symbol",
    name: "繼承可枚舉屬性"
};
// 不可枚舉屬性
Object.defineProperty(proto, "age", {
    value: "繼承不可枚舉屬性"
});
// 不可枚舉symbol屬性
Object.defineProperty(proto, notEnum, {
    value: "繼承不可枚舉symbol"
});

var obj = {
    job1: "自有可枚舉屬性1",
    job2: "自有可枚舉屬性2",
    [Symbol("自有可枚舉symbol")]: "自有可枚舉symbol"
};
// 繼承
Object.setPrototypeOf(obj, proto);
// 不可枚舉屬性
Object.defineProperty(obj, "address", {
    value: "自有不可枚舉屬性"
});
// 不可枚舉symbol屬性
var ownNotEnum = Symbol("自有不可枚舉symbol");
Object.defineProperty(obj, ownNotEnum, {
    value: "自有不可枚舉symbol"
});

五種武器

for…in

這個(gè)是對(duì)象遍歷界的老兵了,通過(guò)這種方式可以遍歷對(duì)象自身及繼承的所有可枚舉屬性(不包括Symbol類型)。

代碼清單2

for(var attr in obj){
    console.log(attr,"==",obj[attr]);
}
/*
job1 == 自有可枚舉屬性1
job2 == 自有可枚舉屬性2
name == 繼承可枚舉屬性
*/

Object.keys

獲取對(duì)象自身所有可枚舉屬性(不包括Symbol類型)組成的數(shù)組

代碼清單3

Object.keys(obj).map((attr)=>{
    console.log(attr,"==",obj[attr]);
});
/*
job1 == 自有可枚舉屬性1
job2 == 自有可枚舉屬性2
*/

Object.getOwnPropertyNames

獲取對(duì)象自身所有類型為非Symbol的屬性名稱(包括不可枚舉)組成的數(shù)組

代碼清單4

Object.getOwnPropertyNames(obj).map((attr)=>{
    console.log(attr,"==",obj[attr]);
});
/*
job1 == 自有可枚舉屬性1
job2 == 自有可枚舉屬性2
address == 自有不可枚舉屬性
*/

Object.getOwnPropertySymbols

獲取對(duì)象自身所有類型為Symbol的屬性名稱(包括不可枚舉)組成的數(shù)組

代碼清單5

Object.getOwnPropertySymbols(obj).map((attr)=>{
    console.log(attr,"==",obj[attr]);
});
/*
Symbol(自有可枚舉symbol) == 自有可枚舉symbol
Symbol(自有不可枚舉symbol) == 自有不可枚舉symbol
*/

Reflect.ownKeys

獲取一個(gè)對(duì)象的自身的所有(包括不可枚舉的和Symbol類型)的屬性名稱組成的數(shù)組

代碼清單6

Reflect.ownKeys(obj).map((attr)=>{
    console.log(attr,"==",obj[attr]);
});
/*
job1 == 自有可枚舉屬性1
job2 == 自有可枚舉屬性2
address == 自有不可枚舉屬性
Symbol(自有可枚舉symbol) '==' '自有可枚舉symbol'
Symbol(自有不可枚舉symbol) '==' '自有不可枚舉symbol'
*/

總結(jié)

武器庫(kù)的說(shuō)明書(shū),根據(jù)需要選擇合適的武器吧。

api 操作 自身屬性 不可枚舉屬性 繼承屬性 Symbol屬性
for…in 遍歷 yes no yes no
Object.keys 返回屬性數(shù)組 yes no no no
Object.getOwnPropertyNames 返回非Symbol屬性數(shù)組 yes yes no no
Object.getOwnPropertySymbols 返回Symbol屬性數(shù)組 yes yes no yes
Reflect.ownKeys 返回屬性數(shù)組 yes yes no yes

五種武器里最牛的就是Reflect.ownKeys了,無(wú)論Symbol還是不可枚舉通吃, 簡(jiǎn)直就是Object.getOwnPropertyNames和Object.getOwnPropertySymbols合體的效果。

擴(kuò)展

Object.values

獲取對(duì)象自身所有可枚舉屬性(不包括Symbol類型)的值組成的數(shù)組

代碼清單7

Object.values(obj).map((val)=>{
    console.log(val);
});
/*
自有可枚舉屬性1
自有可枚舉屬性2
*/

Object.entries

獲取對(duì)象自身所有可枚舉屬性(不包括Symbol類型)的鍵值對(duì)數(shù)組

代碼清單7

Object.entries(obj).map((val)=>{
    console.log(val);
});
/*
[ 'job1', '自有可枚舉屬性1' ]
[ 'job2', '自有可枚舉屬性2' ]
*/

hasOwnProperty

檢測(cè)一個(gè)對(duì)象自身屬性中是否含有指定的屬性,返回boolean

引用自MDN: JavaScript 并沒(méi)有保護(hù) hasOwnProperty 屬性名,因此某個(gè)對(duì)象是有可能存在使用這個(gè)屬性名的屬性,所以直接使用原型鏈上的 hasOwnProperty 方法

代碼清單8

for(var attr in obj){
    if(Object.prototype.hasOwnProperty.call(obj,attr)){
        console.log("自有屬性::",attr);
    }else{
        console.log("繼承屬性::",attr);
    }
}
/*
自有屬性:: job1
自有屬性:: job2
繼承屬性:: name
*/

propertyIsEnumerable

檢測(cè)一個(gè)屬性在指定的對(duì)象中是否可枚舉,返回boolean

代碼清單9

Reflect.ownKeys(obj).map((attr) => {
    if (Object.prototype.propertyIsEnumerable.call(obj, attr)) {
        console.log("可枚舉屬性::", attr);
    } else {
        console.log("不可枚舉屬性::", attr);
    }
});
/*
可枚舉屬性:: job1
可枚舉屬性:: job2
不可枚舉屬性:: address
可枚舉屬性:: Symbol(自有可枚舉symbol)
不可枚舉屬性:: Symbol(自有不可枚舉symbol)
*/

參考

MDN Object

總結(jié)

到此這篇關(guān)于javascript遍歷對(duì)象的五種方式的文章就介紹到這了,更多相關(guān)javascript遍歷對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 微信小程序如何獲取用戶頭像和昵稱

    微信小程序如何獲取用戶頭像和昵稱

    這篇文章主要介紹了微信小程序如何獲取用戶頭像和昵稱,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • JS中強(qiáng)制類型轉(zhuǎn)換的實(shí)現(xiàn)

    JS中強(qiáng)制類型轉(zhuǎn)換的實(shí)現(xiàn)

    JavaScript中有幾種強(qiáng)制類型轉(zhuǎn)換的方法,可以將一個(gè)數(shù)據(jù)類型轉(zhuǎn)換為另一個(gè)數(shù)據(jù)類型,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-05-05
  • js讀取注冊(cè)表的鍵值示例

    js讀取注冊(cè)表的鍵值示例

    讀取注冊(cè)表的鍵值的方法有很多,在本文將為大家詳細(xì)介紹下使用js如何實(shí)現(xiàn)注冊(cè)表的鍵值讀取,感興趣的朋友可以參考下
    2013-09-09
  • showModalDialog在谷歌瀏覽器下會(huì)返回Null的解決方法

    showModalDialog在谷歌瀏覽器下會(huì)返回Null的解決方法

    showModalDialog的返回值在IE、火狐下面都能夠獲取返回值,但是在谷歌瀏覽器下面會(huì)返回Null,下面有個(gè)不錯(cuò)的解決方法,感興趣的朋友可以參考下
    2013-11-11
  • JS使用new操作符創(chuàng)建對(duì)象的方法分析

    JS使用new操作符創(chuàng)建對(duì)象的方法分析

    這篇文章主要介紹了JS使用new操作符創(chuàng)建對(duì)象的方法,結(jié)合實(shí)例形式分析了javascript面向?qū)ο蟪绦蛟O(shè)計(jì)類的定義、new操作符對(duì)象的創(chuàng)建及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-05-05
  • js判斷undefined類型示例代碼

    js判斷undefined類型示例代碼

    這篇文章主要介紹了js判斷undefined類型的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2014-02-02
  • JS嚴(yán)格模式原理與用法實(shí)例分析

    JS嚴(yán)格模式原理與用法實(shí)例分析

    這篇文章主要介紹了JS嚴(yán)格模式原理與用法,結(jié)合實(shí)例形式分析了JS嚴(yán)格模式基本概念、原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • Javascript中類式繼承和原型式繼承的實(shí)現(xiàn)方法和區(qū)別之處

    Javascript中類式繼承和原型式繼承的實(shí)現(xiàn)方法和區(qū)別之處

    其它的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言都是通過(guò)關(guān)鍵字來(lái)解決繼承的問(wèn)題。但是javascript中并沒(méi)有定義這種實(shí)現(xiàn)的機(jī)制。接下來(lái)通過(guò)本文給大家介紹Javascript中類式繼承和原型式繼承的實(shí)現(xiàn)方法和區(qū)別,需要的朋友可以參考下
    2017-04-04
  • JavaSctit 利用FileReader和濾鏡上傳圖片預(yù)覽功能

    JavaSctit 利用FileReader和濾鏡上傳圖片預(yù)覽功能

    FileReader 對(duì)象允許Web應(yīng)用程序異步讀取存儲(chǔ)在用戶計(jì)算機(jī)上的文件內(nèi)容,使用 File或 Blob對(duì)象指定要讀取的文件或數(shù)據(jù)。下面通過(guò)本文給大家分享JavaSctit 利用FileReader和濾鏡上傳圖片預(yù)覽功能,需要的朋友參考下吧
    2017-09-09
  • javascript設(shè)計(jì)模式 – 享元模式原理與用法實(shí)例分析

    javascript設(shè)計(jì)模式 – 享元模式原理與用法實(shí)例分析

    這篇文章主要介紹了javascript設(shè)計(jì)模式 – 享元模式,結(jié)合實(shí)例形式分析了javascript享元模式相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04

最新評(píng)論

东安县| 绥芬河市| 怀柔区| 隆德县| 贡觉县| 谢通门县| 印江| 宜宾市| 奉节县| 衡阳县| 崇明县| 新泰市| 兰考县| 通化市| 周至县| 寿光市| 邳州市| 阿坝县| 普兰店市| 中西区| 隆回县| 满洲里市| 佛冈县| 根河市| 陇南市| 萍乡市| 密山市| 天水市| 桂东县| 阳江市| 色达县| 昂仁县| 嘉定区| 登封市| 巢湖市| 玉山县| 茶陵县| 巴东县| 唐海县| 大悟县| 眉山市|