我正在尝试在对象中使用_.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
。
我究竟做错了什么 ?
答案 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}}