私は Javascript を学習する方法を見つけようとしていますが、いくつかのコードが同一であり、結果が異なるという問題に直面しています。オブジェクト (インスタンス) を定義する方法は 3 つあります。
バージョン 1:
var obj = { //create the instance
variable: value
};
obj.fun = function() {
obj.variable += 1;
console.log('obj.fun is called');
};
バージョン 2:
var obj = { //create the instance
variable: value,
fun: function() {
this.variable += 1;
console.log('obj.fun is called');
}
};
バージョン 3:
function Obj() { //create the class
this.variable = value;
this.fun = function() {
this.variable += 1;
console.log('obj.fun is called');
}
};
obj = new Obj(); //create the instance
実際、私がやろうとしているのは、これを使用して HTML5 キャンバスにマウス イベント ハンドラーを作成することです。
canvas_id.addEventListener("mousedown", obj.fun, false);
現在、このイベント リスナーを使用して関数を呼び出そうとすると、バージョン 1 しか機能obj.fun
していませんが、バージョン 2 の方がクリーンだと思うので、使用することを好みます。バージョン 2 および 3 では、呼び出し時に関数が実行されobj.fun(newvalue)
ますが (コンソール メッセージが作成されます)、変数は新しい値に変更されません。obj.variable
元の値を取得しようとすると、返されます。
これら 3 つのバージョンの記述の正確な違いを知りたいので、いつ何を使用すればよいかを理解できます。前もって感謝します。