當我做console.log(someobject)
時,我在對象內部看到一些對象,其中包含大量的數據。Console.log顯示隱藏的對象信息
如果我在我的對象(屬性也是對象)上有很多屬性,我可以很容易地獲得數百個原型。無論如何,這是否會以任何方式影響性能?我應該使用數組嗎?
當我做console.log(someobject)
時,我在對象內部看到一些對象,其中包含大量的數據。Console.log顯示隱藏的對象信息
如果我在我的對象(屬性也是對象)上有很多屬性,我可以很容易地獲得數百個原型。無論如何,這是否會以任何方式影響性能?我應該使用數組嗎?
它只是JavaScript內部原型鏈的一部分。無論何時創建新對象,其__proto__
屬性都設置爲其「父」對象的prototype
屬性。要回答你的問題,它不會直接影響你可以控制的性能,所以不要擔心。
如果您想了解更多關於它,看看MDN,https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/Proto
熟悉原型繼承JavaScript使用。參見例如,here at MDN。
簡而言之:JavaScript中的對象不是通過實例化類創建的,而是創建一個與另一個對象(原型)相似的對象。所以每個對象都有一個指向其原型的指針。
如果代碼中的某個點需要某個對象的方法或屬性,那麼編譯器會檢查對象本身是否擁有這樣的屬性(comp。hasOwnProperty())。如果不是,它會查看相應的原型對象。如果在那裏找不到財產,那麼它就會查看原型的原型等等。這一直完成到Object
,這是JavaScript中的基本原型。原型鏈也被稱爲prototype chain
。
由於這是該語言的固有特性,您無法繞過它,因此它不會對您的特定網站的性能產生任何影響。
這可能會減慢console.log
調用,但不是生產模式下的應用程序。 無論如何 Object
對象的屬性是一個非標準的和不贊成使用的Mozilla擴展,它有一天將被刪除,所以不用擔心它(標準Object.getPrototypeOf(obj)
方法可以使用,而不是obj.__proto__
)。
數組和對象完全是兩回事。使用你所需要的... – gdoron 2012-03-30 10:50:03
數組也可以從'Object'繼承,所以在這方面你不會得到任何東西。基本上,所有東西都是JavaScript中的一個對象(在訪問它們的方法時,原始類型會轉換爲對象)。這就是JavaScript。使用哪種數據結構取決於你的數據... – 2012-03-30 10:50:17
以及我只使用對象,因爲我可以像對待數組一樣使用鍵 – ellabeauty 2012-03-30 10:50:28