私は、JavaScriptのゲームで使用するために、canvas要素でサーフィンして、私はこのコードを見つけました:JavaScriptコンストラクタ:これはプロパティか変数ですか?
function component(width, height, color, x, y) {
this.width = width;
this.height = height;
this.x = x;
this.y = y;
ctx = myGameArea.context; // **why not: var ctx= myGameArea.context ???**
ctx.fillStyle = color;
ctx.fillRect(this.x, this.y, this.width, this.height);
}
私の質問はctx
プロパティで何ですか?またはプライベート変数?
ctx
は、このコンストラクタの外側では(var ctx
のように)宣言されていない、または使用されていません。これはこのコードの中だけです。
私はあなたがvar
予約語なしで直接値で変数を設定している場合、あなたはグローバルに宣言している聞きます。しかし、そのctx
変数は、そのコンストラクタの外で使用されていないので、役に立たないですか?
また、key
プロパティをオブジェクトのインスタンスに設定するときも同じことが行われます。
完全コード...
var myGamePiece;
function startGame() {
myGameArea.start();
myGamePiece = new component(30, 30, "red", 10, 120);
}
var myGameArea = {
canvas : document.createElement("canvas"),
start : function() {
this.canvas.width = 480;
this.canvas.height = 270;
this.context = this.canvas.getContext("2d");
document.body.insertBefore(this.canvas, document.body.childNodes[0]);
}
}
function component(width, height, color, x, y) {
this.width = width;
this.height = height;
this.x = x;
this.y = y;
ctx = myGameArea.context;
ctx.fillStyle = color;
ctx.fillRect(this.x, this.y, this.width, this.height);
}
実際にはグローバル変数です。 – epascarello
はい、悪いコードのようです。たぶん 'var ctx'でしょう。 –
これは変数ですが、その関数の外で宣言することができるため、必ずしもグローバルである必要はありません。 –