javaScript";这";闭包论证

javaScript";这";闭包论证,javascript,closures,Javascript,Closures,我现在面临一个js关闭问题。在下面的代码中,我试图将一个事件处理程序“getNum”绑定到按钮,问题是这个处理程序是对象中的一个属性,所以我在一本书中读到它,它说我应该将我的处理程序放在一个类似于bellow的闭包函数中,问题是我真的不明白为什么“这个”当我将处理程序放入匿名函数时,参数指向正确的对象;为什么要将“event”参数传递给该函数,“event”参数指的是什么,当我单击按钮时,它是event对象吗 this.num = 9; var myObj = { num : 81;

我现在面临一个js关闭问题。在下面的代码中,我试图将一个事件处理程序“getNum”绑定到按钮,问题是这个处理程序是对象中的一个属性,所以我在一本书中读到它,它说我应该将我的处理程序放在一个类似于bellow的闭包函数中,问题是我真的不明白为什么“这个”当我将处理程序放入匿名函数时,参数指向正确的对象;为什么要将“event”参数传递给该函数,“event”参数指的是什么,当我单击按钮时,它是event对象吗

this.num = 9;
var myObj = {
    num : 81;
    getNum : function(){return this.num;}
}
var btn = document.getElementById("my-btn");

// btn.addEventListener("click",myObj.getNum);  this doesn't work cause "this" point to the btn object,which doesn't have num attribute.

btn.addEventListener("click",function(event){
      myObj.getNum(event);
    });//worked, but I don't know why.

这与闭包无关。这是关于
这个
。(尽管如此,调用
myObj.getNum(event)
确实在闭包中。这并不真正相关。)
“单击”,myObj.getNum)
不起作用,因为
myObj.getNum
将返回没有上下文的函数。因此,当您将其作为偶数侦听器传递时,
将指向
窗口
,而不是
myObj
@deceze:27秒前。:-)因为
这个
是在调用时由函数的调用方式决定的;如果您只是传递
addEventListener('click',myObj.getNum)
,它将被
addEventListener以不同的方式调用。是的,
event
对象表示单击事件,但您根本没有使用它。@Rajesh我已经理解了这一部分,但第二部分让我感到困惑。