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);

Webページで実行すると、コンソールでエラーが発生します。

Uncaught ReferenceError: canvas is not defined

そして、this.canvas代わりに使用する必要があります。これはプロパティでのみ発生しcanvas、他のプロパティでは発生しません。誰かが理由を知っていて、説明を提供できますか?ありがとう!

4

2 に答える 2

1

他の 3 つのプロパティcameraとはすべて関数の引数として定義されているため、関数スコープ内で使用できます mapSize。は関数の引数ではなく、関数内で定義されていないため、スコープ内には存在しません。widthcanvas

于 2013-01-10T04:58:10.480 に答える
1

変数とプロパティを区別する必要があります。コンストラクター関数には、[ローカル]変数が 3 つしかありません。つまり、パラメーターcameramapSize、およびwidthです。

canvasなどheightはインスタンスのプロパティであり、thisキーワードを使用していくつかの値を割り当てます。

于 2013-01-10T04:58:13.093 に答える