可能重复:
Javascript: Do I need to put this.var for every variable in an object?
我遇到了以下代码的问题:
var BuildMiniMap = function(camera, mapSize, width){
this.camera = camera;
this.canvas = document.getElementById('gameCanvas');
this.mapSize = mapSize;
this.width = width;
this.height = Math.floor(mapSize[1]/(mapSize[0]/width));
alert(canvas);
}
var miniMap = new BuildMiniMap(camera, [800, 600], 200);
在网页中运行它会导致控制台出错:
Uncaught ReferenceError: canvas is not defined
我必须使用this.canvas
代替。这只发生在canvas
属性,而不是任何其他属性。有谁知道原因并可以提供解释?谢谢!
答案 0 :(得分:1)
其他三个属性camera
,mapSize
和width
都被定义为函数参数,因此在函数范围内可用。 canvas
不是函数参数,并且未在函数内定义,因此它不在范围内。
答案 1 :(得分:1)
您需要区分变量和属性。构造函数中只有三个[local] 变量,即参数camera
,mapSize
和width
。
canvas
,height
等是您实例的属性,您可以使用this
keyword为其指定一些值。