第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

按鍵獲取值時對象的基本工作原理

按鍵獲取值時對象的基本工作原理

守著一只汪 2023-01-06 11:06:08
我有一個問題,當我們通過鍵獲取值時,對象鍵值如何工作?是否需要先查找key所在的位置,然后返回對應的值?例如:如果我們有像這樣的對象var obj = { keyX: valueX, keyY: valueY, keyZ: valueZ }然后我們檢索值obj.keyY,那么它是否在那些對象鍵上一一查找以找到keyY?那么對于大對象(比如有100萬個key的對象),key取值會不會很慢?我感謝任何幫助。謝謝你。
查看完整描述

2 回答

?
烙印99

TA貢獻1829條經(jīng)驗 獲得超13個贊

然后我們檢索值obj.keyY,那么它是否在那些對象鍵上一一查找以找到keyY?

這取決于實現(xiàn),但即使在舊的 JavaScript 引擎中,答案是否定的,它比那要高效得多。對象屬性訪問是一個非常常見的操作,因此 JavaScript 引擎積極優(yōu)化它,并且在這樣做時非常復雜。

在現(xiàn)代 JavaScript 引擎中,對象通常被優(yōu)化為即時生成的類機器代碼,因此屬性查找速度快得令人眼花繚亂。如果由于某種原因它們沒有被優(yōu)化(可能只是不經(jīng)常使用),通常會使用像哈希表這樣的結(jié)構(gòu),因此查找仍然比線性訪問(查看每個屬性)要好得多。

具有大量屬性或隨時間變化的屬性的對象可能不如具有更合理數(shù)量的屬性的對象優(yōu)化得好。但它們至少會被優(yōu)化(在任何模糊現(xiàn)代的事物中)到哈希表級別的訪問時間。(FWIW:對于隨著時間的推移具有不同屬性的對象,首先使用 a 可能會更好Map。)


雖然在學術(shù)上很有趣,但在編寫代碼時不要擔心這一點,直到/除非你遇到性能問題,你追蹤到緩慢的屬性訪問。(這是我在 ~20 年的 JavaScript 編碼中從未有過的。:-))


查看完整回答
反對 回復 2023-01-06
?
Cats萌萌

TA貢獻1805條經(jīng)驗 獲得超9個贊

小基準:


//setup..

for(var obj = {}, i =0; i<1000000; obj['key'+i] = i++);

var a;

//find 1

console.time(1);

a = obj.key1;

console.timeEnd(1);

//find last

console.time(2);

a = obj.key999999;

console.timeEnd(2);

如您所見,它不是一個一個地查找



查看完整回答
反對 回復 2023-01-06
  • 2 回答
  • 0 關(guān)注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號