0
我想要一個特定的函數來創建一個網格,並在每個插槽中插入一個唯一的對象。這裏的關鍵是,函數應該接受構造函數作爲參數(因爲可能需要通過此函數調用多個構造函數),但實例化多個對象。Javascript:通過構造函數作爲參數,函數只實例化一個對象
現在,我有:
//constructor
function NewObj(){
...some stuff
}
//function to construct. Needed since grid function accepts non-constructors as well
function buildNewObj(){ return new NewObj();}
//here is the grid function that takes size and which data to pre-insert as parameters
function newGrid(rows,cols,dataFunction){
var customGrid = [];
for(row=0;row<rows;row++){
var customRow = [];
for(col=0;col<cols;col++){
var data = dataFunction;
customRow.push(data);
}
customGrid.push(customRow);
}
return customGrid;
}
調用:
var myGrid = newGrid(3,3,buildNewObj());
myGrid的結果是一個3x3的網格,所有鏈接到同一個對象。如果我在buildNewObj()函數中放置一個Alert()並運行它,則該警報只顯示一次。
如果我們改變內newGrid代碼不採取構造函數作爲參數,而是直接引用它,如下所示:
var data = buildNewObj();
,而不是
var data = dataFunction;
然後每個插槽的網格內獲得自己獨特的對象。
如何在通過參數傳遞構造函數的同時在網格的每個插槽中獲取唯一對象?
謝謝!
真棒。這工作。謝謝 – ZAR