2012-03-30 88 views
0

當我做console.log(someobject)時,我在對象內部看到一些對象,其中包含大量的數據。Console.log顯示隱藏的對象信息

如果我在我的對象(屬性也是對象)上有很多屬性,我可以很容易地獲得數百個原型。無論如何,這是否會以任何方式影響性能?我應該使用數組嗎?

+0

數組和對象完全是兩回事。使用你所需要的... – gdoron 2012-03-30 10:50:03

+1

數組也可以從'Object'繼承,所以在這方面你不會得到任何東西。基本上,所有東西都是JavaScript中的一個對象(在訪問它們的方法時,原始類型會轉換爲對象)。這就是JavaScript。使用哪種數據結構取決於你的數據... – 2012-03-30 10:50:17

+0

以及我只使用對象,因爲我可以像對待數組一樣使用鍵 – ellabeauty 2012-03-30 10:50:28

回答

1

熟悉原型繼承JavaScript使用。參見例如,here at MDN

簡而言之:JavaScript中的對象不是通過實例化類創建的,而是創建一個與另一個對象(原型)相似的對象。所以每個對象都有一個指向其原型的指針。

如果代碼中的某個點需要某個對象的方法或屬性,那麼編譯器會檢查對象本身是否擁有這樣的屬性(comp。hasOwnProperty())。如果不是,它會查看相應的原型對象。如果在那裏找不到財產,那麼它就會查看原型的原型等等。這一直完成到Object,這是JavaScript中的基本原型。原型鏈也被稱爲prototype chain

由於這是該語言的固有特性,您無法繞過它,因此它不會對您的特定網站的性能產生任何影響。

1

這可能會減慢console.log調用,但不是生產模式下的應用程序。 無論如何 Object對象的屬性是一個非標準的和不贊成使用的Mozilla擴展,它有一天將被刪除,所以不用擔心它(標準Object.getPrototypeOf(obj)方法可以使用,而不是obj.__proto__)。