-1
在以下片段中,子類數組的行爲與原始數組的行爲不同。爲什麼?子類數組的長度
function Arr() {}
Arr.prototype = new Array();
var iArr = new Arr();
iArr[0] = 9;
iArr[5] = 10;
console.log(iArr.length);
console.log(iArr[0]);
console.log(iArr[5]);
iArr.push(87);
console.log(iArr.length);
console.log(iArr[0]);
console.log(iArr[5]);
結果
0
9
10
1
87
10
而
var iArr = new Array();
iArr[0] = 9;
iArr[5] = 10;
console.log(iArr.length);
console.log(iArr[0]);
console.log(iArr[5]);
iArr.push(87);
console.log(iArr.length);
console.log(iArr[0]);
console.log(iArr[5]);
給
6
9
10
7
9
10
我本來預期的第一個片段爲好。
我不明白爲什麼第一個片段的長度屬性沒有通過索引訪問元素而改變。
[你可以在不ES5子陣列(http://perfectionkills.com/how-ecmascript-5-still- do-not-allow-to-subclass-an-array /) –
在這種情況下,這意味着什麼?未定義的行爲?那麼ES6(iojs)呢? – JeffRSon
密切相關:[使用setPrototypeOf進行數組子類化](http://stackoverflow.com/q/27985546/710446) – apsillers