[英]Uncaught TypeError: undefined is not a function
大家好,我目前是一名學生,正在從事我書中的一個項目,這是我遇到問題的代碼。
for (var i = 0; i < numAsteroids; i++) {
var radius = 5+(Math.random()*10);
var x = canvasWidth+radius+Math.floor(Math.random()*canvasWidth);
var y = Math.floor(Math.random()*canvasHeight);
var vX = -5-(Math.random()*5);
asteroids.push(new Asteroid(x, y, radius, vX));***<---line 21***
};
現在,當我運行時,它一直告訴我我有一個:
Uncaught TypeError: undefined is not a function line 21.
但是我有我書中的代碼,這是我不明白的。 如果有人能幫我解決這個問題,那就太好了!
如果由於.push()
方法而導致錯誤來自這一行:
asteroids.push(new Asteroid(x, y, radius, vX));
然后,問題是asteroids
尚未初始化為數組,因此它沒有方法.push()
。
您可以像這樣初始化它:
var asteroids = [];
for (var i = 0; i < numAsteroids; i++) {
var radius = 5+(Math.random()*10);
var x = canvasWidth+radius+Math.floor(Math.random()*canvasWidth);
var y = Math.floor(Math.random()*canvasHeight);
var vX = -5-(Math.random()*5);
asteroids.push(new Asteroid(x, y, radius, vX));
}
如果未定義Asteroid
構造函數,也可能會出現此類錯誤。
是否定義了Asteroid
函數?
以下作品。
var asteroids = [],
numAsteroids = 10,
canvasWidth = 10,
canvasHeight = 10,
radius = 10;
for (var i = 0; i < numAsteroids; i++) {
var radius = 5+(Math.random()*10);
var x = canvasWidth+radius+Math.floor(Math.random()*canvasWidth);
var y = Math.floor(Math.random()*canvasHeight);
var vX = -5-(Math.random()*5);
asteroids.push(new Asteroid(x, y, radius, vX));
};
// Is the Asteroid function/class defined?
function Asteroid(x, y, r, vX) {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.