2
我想我可能發現了Google Chrome(16.0.912.75米,這是撰寫本文時的最新版本)的錯誤。什麼是使用log()顯示的Chrome控制檯?
var FakeFancy = function() {};
console.log(new FakeFancy());
var holder = {
assignTo : function (func) {
holder.constructor = func;
}
};
holder.assignTo(function() { this.type = 'anonymous' });
var globalConstructor = function() { this.type = 'global' }
console.log(new holder.constructor());
如果運行在Firefox中該塊,它表明雙方列爲「對象」與第二有型=地方,還算不錯。但是如果你在Chrome中運行它,它會顯示
> FakeFancy
> globalConstructor.type
如果展開樹,則內容是正確的。但我無法弄清楚Chrome會列出哪些內容作爲記錄每個對象的第一行。由於我不是在操縱原型,所以這些應該是簡單的舊對象,不能從任何地方繼承。起初,我認爲這是與WebKit相關的,但我嘗試了最新的Safari for Windows(5.1.2 7534.52.7),並且都顯示爲「Object」。
我懷疑它試圖做一些猜測構造函數被調用的地方。匿名構造函數的間接性是如何搞亂它的?
如果你的問題只是關於前兩行和它們的輸出,你爲什麼要包含如此多的代碼? (「但我無法弄清Chrome作爲第一行列出的是什麼。」)我一定是誤解了...... – Domenic 2012-01-10 00:02:15
對不起,添加了清晰度編輯。記錄每個對象的第一行。 – 2012-01-10 00:23:18