Javascript 在我的插件中没有调用更新函数

Javascript 在我的插件中没有调用更新函数,javascript,jquery,Javascript,Jquery,我正在尝试创建一个超级简单的插件。这是我的代码: var methods = { init: function (userOptions) { console.log('init'); setInterval(this.update, 1000); }, update: function(){ console.log(this); } };

我正在尝试创建一个超级简单的插件。这是我的代码:

 var methods = {
        init: function (userOptions) {
            console.log('init');

            setInterval(this.update, 1000);
        },

        update: function(){
            console.log(this);
        }
    };

    $.fn.myPlugin = function (methodOrOptions) {
        if (methods[methodOrOptions]) {
            return methods[methodOrOptions].apply(this, Array.prototype.slice.call(arguments, 1));
        } else if (typeof methodOrOptions === 'object' || !methodOrOptions) {
            return methods.init.apply(this, arguments);
        } else {
            $.error('Method ' + methodOrOptions + ' does not exist on jQuery.myPlugin');
        }
    };

在这里,init被称为fine,但update不会每1秒被调用一次。这里缺少什么?

这是绑定到jquery对象的。它没有此更新。可以这样做:

setInterval(methods.update.bind(this), 1000);

只需获取全局方法对象的更新函数,并将jquery对象绑定到它。

methods.init.apply(this,arguments)
更改
this
的值。在本例中,它被设置为jQuery对象,这是您不想要的。您希望它引用方法。从Jquery 3开始,bind不是不推荐使用吗?还有其他选择吗?@timliberty bind在这个上下文中与jquery无关。有关更多信息,请参阅Function.prototype.bind。。。