這裏我有一個Store構造函數,它有一個名爲arr的屬性,它是使用新的Array(height * width)創建的,提供的高度和長度作爲參數發送到Store構造函數。我知道的是新的Array(20)將創建一個包含20個元素的數組。什麼新的數組(20)實際上做
Store構造函數有一個prototype屬性,它使用map數組並填充new Store實例的this.arr。
但是令人驚訝的是,在填充過程之後數組長度得到了擴展。它變成了40.我知道push方法在數組的末尾插入元素。這是否意味着數組已經有20個元素。 但它應該是空的,對嗎?我很困惑!!!
var map=['d d d d d ',
'e e e e e ']
function Store(width,height){
this.width=width;
\t this.height=height;
\t this.arr=new Array(this.width*this.height);
}
Store.prototype.set=function(map){
for(i=0;i<this.height;i++){
\t for(j=0;j<this.width;j++){
\t \t this.arr.push(map[i][j]);
\t \t }
\t }
}
var store=new Store(map[0].length,map.length);
document.write('previously : '+store.arr.length+'</br>');
store.set(map);
document.write('now : '+store.arr.length);
'new Array(20)'不會創建一個「最多可容納20個項目」的數組,而是一個「.length」初始化爲「20」的空數組。但是,'.push()'總是隻在最後添加新的項目。 – Bergi 2014-10-02 13:07:07