0

可能重复:
Javascript:我是否需要为对象中的每个变量放置 this.var?

我遇到了以下代码的问题:

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财产上,而不会发生在任何其他财产上。有谁知道原因并能给出解释吗?谢谢!

4

2 回答 2

1

其他三个属性camera和都定义为函数参数,因此在函数范围内可用 mapSize。不是函数参数,也没有在函数内部定义,因此它不存在于范围内。widthcanvas

于 2013-01-10T04:58:10.480 回答
1

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

canvasheight是您的实例的属性,您可以使用this关键字为其分配一些值。

于 2013-01-10T04:58:13.093 回答