在对象中使用下划线限制 - 如何保持对象的引用?

时间:2014-12-01 20:07:54

标签: underscore.js throttling

我正在尝试在对象中使用_.throttle,但我想我还不明白如何正确地执行此操作。

我使用jQuery和Underscore.js

function object() {
    this.throtthled = function () {
        // This should alert 1
        alert(this.var);
    }

    this.fastFunc = _.throttle(this.throtthled, 100);
    this.var = 1;
}


$(function () {    
    var myObject = new object();
    $(document).on('mousemove', myObject.fastFunc);    
});

但正如您在jsfiddle上看到的那样,这只会在控制台中返回undefined。 我究竟做错了什么 ?

1 个答案:

答案 0 :(得分:4)

您在创建this.throtthled之前访问undefined,将_.throttle传递给.apply而不是函数(具有// using the prototype: function MyObject() { this.fastFunc = _.throttle(this.throttled.bind(this), 100); this.var = 1; } MyObject.prototype.throttled = function () { // This does alert 1 alert(this.var); }; 方法)。

此外,您需要use the correct this context进行回调。

{{1}}