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