为什么我必须使用this.canvas?

时间:2013-01-10 04:52:43

标签: javascript html5 html5-canvas

  

可能重复:
  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属性,而不是任何其他属性。有谁知道原因并可以提供解释?谢谢!

2 个答案:

答案 0 :(得分:1)

其他三个属性cameramapSizewidth都被定义为函数参数,因此在函数范围内可用。 canvas不是函数参数,并且未在函数内定义,因此它不在范围内。

答案 1 :(得分:1)

您需要区分变量和属性。构造函数中只有三个[local] 变量,即参数cameramapSizewidth

canvasheight等是您实例的属性,您可以使用this keyword为其指定一些值。