以下のスニペットはまったく同じことを行います。最初の1つ:
var obj_button = {
clicked: 1,
click: function() {
console.log(clicked);
}
};
二つ目:
var Func_button = function() {
var clicked = 1;
this.click = function() {
console.log(clicked);
}
}
しかし、クロージャーを利用したい場合、最初のアプローチは失敗します:
func = new Func_button();
func.click(); // OK - works fine, outputs 1
obj_button.click(); // FAIL - he don't know what is "clicked"
だから私の質問は、最初のアプローチで、メソッド click() が「クリックされた」パラメータを表示できない理由です。クロージャーはこのパラメーターをカバーすべきではありませんか (2 番目の例のように) ?