請考慮代碼:的Javascript循環通過原型
// define the GameObject constructor function
var GameObject = function(width, height) {
this.x = Math.floor((Math.random() * myCanvasWidth) + 1);
this.y = Math.floor((Math.random() * myCanvasHeight) + 1);
this.width = width;
this.height = height;
return this;
};
// (re)define the GameObject prototype object
GameObject.prototype = {
x: 0,
y: 0,
width: 5,
width: 5,
draw: function() {
myCanvasContext.fillRect(this.x, this.y, this.width, this.height);
}
};
然後,我們可以實例化遊戲物體的100倍。
var x = 100,
arrayOfGameObjects = [];
do {
arrayOfGameObjects.push(new GameObject(10, 10));
} while(x--);
現在我們有100個GameObjects,其中所有共享相同的原型和定義的拉伸方法,所述應用程序內的這大大節省了存儲器的陣列。
當我們調用draw方法時,它會引用完全相同的函數。
var GameLoop = function() {
for(gameObject in arrayOfGameObjects) {
gameObject.draw(); // this is my problem. Is this correct? gameObject is simply and index who draw() method gets executed
}
};
我的問題是最後一行代碼的方法draw()正在執行。由於gameObject只是一個索引,draw()方法如何執行?該索引不包含任何對象。它只是一個索引權?
Here是一個鏈接
你是對的,但由於即時通訊有問題,我需要在這種特殊情況下的幫助 –
需要幫助什麼?上面的代碼回答你的問題... – BenM
看到我的最後一行代碼,其中draw()方法得到執行,這是正確的,因爲var gameObject只保存索引no對象如何執行draw方法? –