0

怪異的行爲任何人都可以請解釋爲什麼這個代碼在谷歌瀏覽器的行爲如此怪異:擴展對象的原型已經在Chrome

<script> 
console.log({someproperty:'hello'}) ; 
Object.prototype.get = function(){} ; 
</script> 

打印到控制檯上的對象的內容沒有「someproperty」,而是有一個「獲得一些屬性」,這是一個功能。
我使用Chrome 21.0。

這是預期嗎?這是一個錯誤嗎?

回答

1

爲什麼設置Object.prototype.get的東西不同等原因引起的異常行爲,但該功能幾乎可以肯定是什麼瀏覽器/ WebKit是在後臺使用生成其看中的對象記錄,我不能向你解釋。

可以告訴你發生了什麼事,即使你在以後的console.log設置不用彷徨的原因是,鍍鉻/ Webkit的不檢索對象,直到你真正單擊箭頭在控制檯擴展物體。您可以通過運行以下jsfiddle來測試:http://jsfiddle.net/BNjWZ/

請注意,如果您單擊箭頭以立即展開對象,則該對象看起來很正常,但如果等待三秒鐘.get = function(){} ;被稱爲,它會有'得到'。

我在22.0.1229.79

+1

延遲控制檯記錄可能已經固定,只是沒有在Chrome尚不穩定:http://code.google.com/p/chromium/issues/detail?id=50316 – jrajav

0

看到這種行爲(無論是在對象顯示奇「獲取」和延遲對象記錄)這不是預期。 沒有在規範中沒有限制的屬性的名稱。所以'get'是一個對象屬性的合法名稱,以及原型對象。

這似乎是在控制檯的全局目錄()函數中的錯誤。

增加:jQuery有以「get」和「設置」性質的問題。