是的,你可以手動改寫一個構造函數的prototype
對象的.constructor
財產。
看起來constructor
屬性已被更改。通常你可能會看到類似function Array() { [native code] }
而不是[ undefined ]
。
有一兩件事可以做,以驗證是...
console.log(typeof [].constructor);
它應該給你"function"
。如果它給你"object"
,那就改變了。
不要相信控制檯輸出
它從你在Firebug測試評論似乎。
作爲一般規則不要太多的信任控制檯日誌記錄。遊戲機是環境的插件,並且必須解釋它們已被記錄到日誌中。有時候這種解釋是誤導性的。
如果你得到奇怪的結果,然後進行其他試驗...
console.log(Array); // [ undefined ] ...huh???
console.log([].constructor); // [ undefined ] ...huh???
typeof [].constructor; // Firebug still gives "function"
[].constructor === Array; // Firebug returns true
所以你可以看到,即使螢火蟲給函數本身的一個奇怪的解釋,它不會改變的事實,它仍然是預期的Array
構造函數。
var data = new Array(1,2,3); console.log(data.constructor);'show me'函數Array(){[native code]}'。你在使用哪個平臺?見下面[小提琴](http://jsfiddle.net/t8XVS/)。 – 2012-07-27 18:57:04
嗯..是的,更混亂。如果我在螢火蟲控制檯中嘗試相同的代碼,它會記錄[未定義]。 – Arjun 2012-07-27 19:02:38
@Arjun:不要太依賴控制檯輸出。這是一種解釋,容易出錯和誤解。 – 2012-07-27 19:08:35