這是因爲你重寫了數組構造函數,它使得調用new Array();
返回的實際對象爲Array
。
所以調用
var arr = ["zdxc", "sd", 1111, 11.1];
使得arr
beeing本地Array
。
調用
var arr_override = new Array();
使得arr_override
beeing之前,因此執行你的alert
語句來宣告你的類型的Object
。覆蓋構造函數類型的「擦除」Array
- 初始化從標識符替換您的構造函數。它不是一個實際的Array
。
根據the answer to this question陣列 - 文字([]
)不beeing影響,因爲在所有的瀏覽器市長關於2008年這種行爲..
編輯:
了一下週圍嘗試之後,在沒有似乎有可能修改[]
-notation的行爲,並且不推薦修改本地對象(特別是它們的構造函數)。
它是如何以往可以延長原型,並修改下面
var arr = [];
arr.push('2323');
alert(arr);
Array.prototype.push = function() { alert('trololololo'); }
arr.push(123);
希望這有助於像例如現有的屬性/方法。乾杯!
它只適用於'var a = new Array();' – nozzleman 2013-02-11 08:39:24