我的代码:

var cardFrame = {
    element: "VALUE",
    flip: function(){
        console.log("flip: "+this.element);
    },
};


当按钮与该行绑定时,单击它会按应有的方式打印flip: VALUE

$("#flashcard").bind( "click", function(){cardFrame.flip();} );


如果与下面的行绑定。该按钮打印flip: undefined

$("#flashcard").bind( "click", cardFrame.flip );


这两个语句在功能上应该相等。为什么是这样?

最佳答案

这并不相等,两种情况下的“ this”是不同的。

首先,“ flip”被称为“ cardFrame”的方法,因此函数“ this”中的对象是“ cardFrame”。

在第二个中,jQuery传递的“ this”是您将click事件附加到的元素。

您可以阅读reference about this

关于javascript - 使用jQuery直接绑定(bind)功能与包装器。为什么不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25421715/

10-10 19:57