日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JS 5種遍歷對象的方式

瀏覽:181日期:2024-05-03 17:45:49

幾天前一個小伙伴問我 Object.getOwnPropertyNames() 是干什么用的

平時還真沒有使用到這個方法,一時不知如何回答

從方法名稱來分析,應該是返回的是對象自身屬性名組成的數組

那和 Object.keys() 方法不就一樣了嗎

感覺事情并不這么簡單,于是我仔細看了一下這幾種遍歷對象的方法的區別

for in

for in 循環是最基礎的遍歷對象的方式,它還會得到對象原型鏈上的屬性

// 創建一個對象并指定其原型,bar 為原型上的屬性const obj = Object.create({ bar: ’bar’})// foo 為對象自身的屬性obj.foo = ’foo’for (let key in obj) { console.log(obj[key]) // foo, bar}

可以看到對象原型上的屬性也被循環出來了

在這種情況下可以使用對象的 hasOwnProperty() 方法過濾掉原型鏈上的屬性

for (let key in obj) { if (obj.hasOwnProperty(key)) { console.log(obj[key]) // foo }}

這時候原型上的 bar 屬性就被過濾掉了

Object.keys

Object.keys() 是 ES5 新增的一個對象方法,該方法返回對象自身屬性名組成的數組,它會自動過濾掉原型鏈上的屬性,然后可以通過數組的 forEach() 方法來遍歷

Object.keys(obj).forEach((key) => { console.log(obj[key]) // foo})

另外還有 Object.values() 方法和 Object.entries() 方法,這兩方法的作用范圍和 Object.keys() 方法類似,因此不再說明

for in 循環和 Object.keys() 方法都不會返回對象的不可枚舉屬性

如果需要遍歷不可枚舉的屬性,就要用到前面提到的 Object.getOwnPropertyNames() 方法了

Object.getOwnPropertyNames

Object.getOwnPropertyNames() 也是 ES5 新增的一個對象方法,該方法返回對象自身屬性名組成的數組,包括不可枚舉的屬性,也可以通過數組的 forEach 方法來遍歷

// 創建一個對象并指定其原型,bar 為原型上的屬性// baz 為對象自身的屬性并且不可枚舉const obj = Object.create({ bar: ’bar’}, { baz: { value: ’baz’, enumerable: false }})obj.foo = ’foo’// 不包括不可枚舉的 baz 屬性Object.keys(obj).forEach((key) => { console.log(obj[key]) // foo})// 包括不可枚舉的 baz 屬性Object.getOwnPropertyNames(obj).forEach((key) => { console.log(obj[key]) // baz, foo})

ES2015 新增了 Symbol 數據類型,該類型可以作為對象的鍵,針對該類型 ES2015 同樣新增Object.getOwnPropertySymbols() 方法

Object.getOwnPropertySymbols

Object.getOwnPropertySymbols() 方法返回對象自身的 Symbol 屬性組成的數組,不包括字符串屬性

Object.getOwnPropertySymbols(obj).forEach((key) => { console.log(obj[key])})

什么都沒有,因為該對象還沒有 Symbol 屬性

// 給對象添加一個不可枚舉的 Symbol 屬性Object.defineProperties(obj, { [Symbol(’baz’)]: { value: ’Symbol baz’, enumerable: false }})// 給對象添加一個可枚舉的 Symbol 屬性obj[Symbol(’foo’)] = ’Symbol foo’Object.getOwnPropertySymbols(obj).forEach((key) => { console.log(obj[key]) // Symbol baz, Symbol foo})

Reflect.ownKeys

Reflect.ownKeys() 方法是 ES2015 新增的靜態方法,該方法返回對象自身所有屬性名組成的數組,包括不可枚舉的屬性和 Symbol 屬性

Reflect.ownKeys(obj).forEach((key) => { console.log(obj[key]) // baz, foo, Symbol baz, Symbol foo})

對比

方式 基本屬性 原型鏈 不可枚舉 Symbol for in 是 是 否 否 Object.keys() 是 否 否 否 Object.getOwnPropertyNames() 是 否 是 否 Object.getOwnPropertySymbols() 否 否 是 是 Reflect.ownKeys() 是 否 是 是

結論

這其中只有 for in 循環會得到對象原型鏈上的屬性,其它方法都只適用于對象自身的屬性

ES 語言后續添加的新特性不會對以前的代碼產生副作用,比如在 ES2015 之前就存在的 for in 循環,Object.keys() 和 Object.getOwnPropertyNames() 是肯定不會返回 Symbol 屬性的

以上就是JS 5種遍歷對象的方式的詳細內容,更多關于JS 遍歷對象的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产日韩欧美一区在线| 欧美少妇精品| 婷婷六月综合| 红桃视频欧美| 99视频精品免费观看| 视频一区在线视频| 日韩国产91| 久久超级碰碰| 免费在线小视频| 精品72久久久久中文字幕| 国产精品蜜芽在线观看| 日韩免费在线| 一区福利视频| 日韩成人一级| 国产第一亚洲| 四虎4545www国产精品| 午夜国产一区二区| 亚洲精品在线国产| 久久精品系列| 亚洲高清不卡| 综合亚洲视频| 精品视频一区二区三区在线观看| 成人欧美一区二区三区的电影| 日韩免费看片| 一本一道久久a久久精品蜜桃| 蜜臀精品久久久久久蜜臀| 国产日韩三级| 久久天堂成人| 欧美天堂一区| 性欧美xxxx免费岛国不卡电影| 亚洲精品成人一区| 吉吉日韩欧美| 亚洲一区有码| 都市激情国产精品| 蜜桃视频在线观看一区| 久久久久久自在自线| 精品1区2区3区4区| 国产日韩欧美高清免费| 日韩中文首页| 亚洲精品123区| 美女精品一区二区| 丝袜美腿亚洲一区二区图片| 精品国产成人| 亚洲精选av| 天堂8中文在线最新版在线| 性欧美长视频| 国产精品4hu.www| 免费视频国产一区| 麻豆精品蜜桃视频网站| 亚洲欧美久久久| 国产一区二区三区日韩精品| 综合激情在线| 久久一区二区三区电影| 国产精品资源| 国产一级久久| 蜜桃精品在线| 久久麻豆视频| 深夜福利亚洲| 欧美性感美女一区二区| 红杏一区二区三区| 7777精品| 免费在线观看精品| 久久在线免费| 久久影院一区二区三区| 日韩精品第一| 亚洲免费播放| 国产精品99视频| 国产精品久久久久久久久久妞妞 | 国产一区成人| 精品国产黄a∨片高清在线| 欧美专区一区| 最新国产精品| 亚洲少妇自拍| 激情丁香综合| 日韩中文影院| 国产美女高潮在线| 成人亚洲精品| 国产一区二区三区精品在线观看| 欧美片第1页综合| 国产一区二区高清| 91久久国产| 色吊丝一区二区| 最新中文字幕在线播放| 欧美1区2区3| 国产精品videossex| 欧美性www| 国产日韩欧美高清免费| 国产调教精品| 国产亚洲久久| 国产亚洲一区二区三区啪| 日韩高清电影免费| 91成人在线精品视频| 欧美亚洲tv| 国产精品一级| 国产欧美一级| 欧美a级一区二区| 精品日韩在线| 国产+成+人+亚洲欧洲在线| 成人午夜亚洲| 久久久水蜜桃av免费网站| 欧洲在线一区| 国产亚洲精品v| 亚洲我射av| 欧美综合精品| 国产成人1区| 91精品国产乱码久久久久久久| 视频二区不卡| 亚洲性图久久| 老司机精品久久| 综合激情五月婷婷| 91精品尤物| 大香伊人久久精品一区二区 | 亚洲三级观看| 日韩成人精品一区二区三区| 欧美伊人影院| 成人亚洲精品| 亚洲成人va| 亚洲深爱激情| 日本视频一区二区| 精品国产一区二区三区2021| 蜜臀国产一区| 色黄视频在线观看| 在线精品视频在线观看高清| 在线精品一区| 欧美激情一区| 91久久国产| 欧美一区自拍| 蜜桃视频在线网站| 天堂av在线一区| 国产精品成人3p一区二区三区| 欧美激情国产在线| 亚洲自拍另类| 国产精品www.| 精品一区三区| 国产乱码精品一区二区三区亚洲人| 精品国产黄a∨片高清在线| 亚洲www免费| 久久亚洲电影| 国产精品中文字幕亚洲欧美| 欧美日中文字幕| 国产日韩欧美一区在线| 青青久久av| 青青伊人久久| 99视频精品全国免费| 亚洲欧美日本国产| 老牛影视精品| 天堂精品久久久久| 91精品韩国| 日韩国产欧美在线播放| 色网在线免费观看| 一区二区三区四区日韩| 久久免费福利| 免费日韩精品中文字幕视频在线| 日韩精品一级| 久久精品高清| 美女毛片一区二区三区四区最新中文字幕亚洲| 亚洲v在线看| 国产精品久久久免费| 性色av一区二区怡红| 国产伦久视频在线观看| 日韩av一级片| 中文日韩欧美| 久久久久一区| 精品视频网站| 日韩一区免费| 欧美日韩日本国产亚洲在线| 美女久久99| 91久久亚洲| av高清不卡| 国产精品hd| 亚洲精品乱码久久久久久蜜桃麻豆| 国产精品伦理久久久久久| 日韩午夜视频在线| 亚洲高清激情| 精品视频97| 欧美一区成人| 午夜在线观看免费一区| 国产欧美一区二区三区精品酒店| 日本不卡视频一二三区| 极品裸体白嫩激情啪啪国产精品| 久久精品亚洲| 欧美亚洲一级| 亚洲欧美激情诱惑| 黄色不卡一区| 久久久久国产精品一区二区| 美女视频黄久久| 欧美一级一区| 午夜久久av| 久久亚洲欧美| 香蕉成人久久| 免费国产自线拍一欧美视频| 亚洲二区免费| 久久影视一区| 久久激情一区| 在线看片福利| av资源新版天堂在线| 精品理论电影在线| 国产精品一区二区三区四区在线观看| 亚洲一区二区三区四区电影| 国产高清一区|