在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    面試官:JavaScript對象屬性是有序的嗎?

    最近有人問我,JavaScript對象屬性是否一定是無序的、不可預(yù)測的?

    早期接觸過JavaScript的開發(fā)者可能會(huì)回答,Object.keys()或for…in會(huì)返回一個(gè)不可預(yù)知的對象屬性順序。

    但現(xiàn)在的情況仍然是這樣嗎?

    不是了,有些情況下是有序的。

    從ECMAScript 2020開始,Object.key、for…in、Object.getOwnPropertyNames和Reflect.ownKeys都遵循同一個(gè)規(guī)范順序。它們是:

    1. 自己的屬性是數(shù)組的索引,按數(shù)字索引升序排列

    const obj = { 100: 100, ‘2’: 2, 12: 12, ‘0’: 0}// 下面打印的結(jié)果順序都是 [‘0’, ‘2’, ’12’, ‘100’]console.log(Object.keys(obj))console.log(Object.getOwnPropertyNames(obj))console.log(Reflect.ownKeys(obj))for (const key in obj) { console.log(‘key’, key)}const obj = { a: ‘a’,};obj.b = ‘b’;setTimeout(() => { obj.c = ‘c’;});obj.d = ‘d’;// 下面打印的結(jié)果順序都是 `[ ‘a’, ‘b’, ‘d’ ]`console.log(Object.keys(obj));console.log(Object.getOwnPropertyNames(obj));console.log(Reflect.ownKeys(obj));for (const key in obj) { console.log(‘key: ‘, key);}

    上面的代碼添加了事件循環(huán)的知識點(diǎn)。因?yàn)?setTimeout 是一個(gè)異步的宏任務(wù),當(dāng)console.log輸出時(shí),c屬性還沒有被添加到 obj 中。

    3. 自身的 Symbol 屬性,按創(chuàng)建時(shí)間順序遞增

    const obj = { [Symbol(‘a’)]: ‘a’, [Symbol.for(‘b’)]: ‘b’,};obj[Symbol(‘c’)] = ‘c’;console.log(Object.keys(obj)); // []console.log(Object.getOwnPropertyNames(obj)); // []console.log(Reflect.ownKeys(obj)); // [ Symbol(a), Symbol(b), Symbol(c) ]for (const key in obj) { console.log(‘key: ‘, key); // 沒有輸出}console.log(Object.getOwnPropertySymbols(obj)); // [ Symbol(a), Symbol(b), Symbol(c) ]

    Symbol 屬性和 String 屬性一樣,是按照屬性創(chuàng)建的時(shí)間順序升序排列的。但是Object.key, for…in, Object.getOwnPropertyNames方法不能獲得對象的 Symbol 屬性,Reflect.ownKeys和 Object.getOwnPropertySymbols 可以。

    總結(jié)

    當(dāng)一個(gè)對象的屬性鍵是上述類型的組合時(shí),該對象的非負(fù)整數(shù)鍵(可枚舉和不可枚舉)首先按升序添加到數(shù)組中,然后按插入順序添加字符串鍵。最后,Symbol 鍵按插入順序加入。

    const obj = { 100: 100, 0: 0, a: ‘a’, [Symbol(‘a’)]: ‘a’,};obj[Symbol.for(‘b’)] = ‘b’;obj.b = ‘b’;console.log(Object.keys(obj)); // [ ‘0’, ‘100’, ‘a’, ‘b’ ]console.log(Object.getOwnPropertyNames(obj)); // [ ‘0’, ‘100’, ‘a’, ‘b’ ]console.log(Reflect.ownKeys(obj)); // [ ‘0’, ‘100’, ‘a’, ‘b’, Symbol(a), Symbol(b) ]for (const key in obj) { console.log(‘key: ‘, key); // ‘0’ ‘100’ ‘a’ ‘b’}console.log(Object.getOwnPropertySymbols(obj)); // [ Symbol(a), Symbol(b) ]

    但是,如果你強(qiáng)烈依賴插入順序,那么Map可以保證這一點(diǎn)。


    作者:islizeqiang 譯者:小智 來源:medium 原文:https://medium.com/@islizeqiang/are-javascript-object-properties-ordered-c30597754e5c

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年7月15日 12:50
    下一篇 2022年7月15日 12:51

    相關(guān)推薦

    • TES官宣knight斷開連接!網(wǎng)友:左手就是下一個(gè)369

      2022LPL冬季轉(zhuǎn)會(huì)期已經(jīng)正式到來,如果說此次轉(zhuǎn)會(huì)期熱度最高的一支隊(duì)伍,無疑就是在2022全球總決賽中拿到四強(qiáng)成績的JDG了。因?yàn)閾?jù)目前網(wǎng)上爆料人的消息來看,JDG很有可能會(huì)通過…

      2022年11月27日
    • 《寶可夢朱紫》獒教父屬性是什么?獒教父屬性一覽

      寶可夢朱紫里獒教父是一只很強(qiáng)的寶可夢,很多玩家不清楚獒教父的屬性是什么樣的,下面就給大家?guī)韺毧蓧糁熳祥峤谈笇傩砸挥[,感興趣的小伙伴一起來看看吧,希望能幫助到大家。 獒教父屬性一覽…

      2022年11月25日
    • 《寶可夢朱紫》太晶化強(qiáng)力寶可夢推薦 太晶化哪些寶可夢最強(qiáng)?

      寶可夢朱紫游戲中寶可夢種類繁多,不過有的寶可夢比較強(qiáng),有的稍弱一些,那么太晶化化哪些寶可夢最強(qiáng)呢,為了便于大家更好的體驗(yàn)游戲,這里給大家?guī)砹藢毧蓧糁熳咸Щ瘡?qiáng)力寶可夢推薦,一起來…

      2022年11月25日
    • 寶可夢朱紫寶主順序怎么選擇?寶可夢朱紫寶主挑戰(zhàn)順序攻略

      寶可夢朱紫寶主順序如何選擇?寶主挑戰(zhàn)的順序有很多玩家都加入了討論,大家想要了解清楚正確的挑戰(zhàn)順序,接下來小編就給大家簡單的介紹一下寶主挑戰(zhàn)的順序,各位趕緊通過下面的攻略多了解一下詳…

      2022年11月25日
    • 5+3疫情防控從哪天開始算(遼寧疫情防控最新政策)

      最近有關(guān)國內(nèi)各地的疫情大家也都有在持續(xù)關(guān)注,目前國內(nèi)各地疫情隔離時(shí)間也根據(jù)二十條防控措施有了新的調(diào)整。那么,5+3疫情防控從哪天開始算?對于密接的5+3隔離時(shí)間計(jì)算大家還是比較關(guān)心…

      2022年11月25日
    • 藍(lán)碼怎么變綠碼需要幾天(藍(lán)碼怎么變綠碼需要幾天)

      大家都知道健康碼的顏色有紅碼、綠碼、黃碼,近日湖南健康碼上線“藍(lán)碼”,不少小伙伴發(fā)現(xiàn)自己健康碼變藍(lán)了,都想趕緊恢復(fù)綠碼,那么藍(lán)碼怎么變綠碼需要幾天?下面小編為大家?guī)硭{(lán)碼變綠碼需要…

      2022年11月25日
    • 寶可夢朱紫四大天王屬性怎么樣 四大天王屬性數(shù)值介紹

      寶可夢朱紫四大天王屬性如何?四大天王的屬性數(shù)值玩家們還是挺好奇的,想要了解四大天王屬性的可以看看下面小編的介紹,小編會(huì)把四大天王的屬性數(shù)值全都分享在下面,各位趕緊來小編這里多了解一…

      2022年11月25日
    • 寶可夢朱紫皮卡丘多少級進(jìn)化 皮卡丘進(jìn)化條件攻略

      寶可夢朱紫皮卡丘進(jìn)化條件是什么?皮卡丘怎么進(jìn)化?作為最受歡迎的電屬性寶可夢,大家都很想知道皮卡丘進(jìn)化的方法,今天小編這就在下面的攻略中分享皮卡丘進(jìn)化條件,各位可以趕緊來小編這里了解…

      2022年11月25日
    • 拼多多百億補(bǔ)貼預(yù)售一般多久發(fā)貨(拼多多百億補(bǔ)貼預(yù)售)

      拼多多里面有很多優(yōu)惠活動(dòng),其中百億補(bǔ)貼活動(dòng)非?;鸨?,一些里面的東西價(jià)格比別的平臺便宜,質(zhì)量也有保障,還有預(yù)售的活動(dòng),那么拼多多百億補(bǔ)貼預(yù)售一般多久發(fā)貨?下面小編為大家?guī)砥炊喽喟賰|…

      2022年11月25日
    • 北京疫情多久能解除封控(北京疫情還要多久結(jié)束)

      最近一段時(shí)間北京疫情形勢備受關(guān)注,馬上就要到年底了,不少人想要去北京辦事,。都非常關(guān)注當(dāng)?shù)匾咔橄嚓P(guān)政策,那么 北京疫情多久能解除封控?北京疫情什么時(shí)候恢復(fù)正常生活?下面小編為大家?guī)А?/p>

      2022年11月25日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息