2014-12-01 6 views
2

개체에 _.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);  
}); 

를 사용하지만 당신은 콘솔에서 undefined이 경우에만 반환이 jsfiddle에 볼 수 있습니다. 내가 뭘 잘못하고 있니?

+0

작성하기 전에 'this.throtthled'에 액세스하고 있습니다. – Bergi

+0

네 말이 맞아. 나는 그것을 고쳤고'this.var'에 접근 할 수 없다. 어떤 생각? –

+0

내 대답보기 – Bergi

답변

4

undefined_.throttle (.apply 메서드 포함) 대신 전달하면 생성하기 전에 this.throtthled에 액세스하고 있습니다.

또한 콜백을 위해 use the correct this context이 필요합니다.

// 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); 
}; 
+0

그것은 작동합니다! 감사. fastFunc에 매개 변수를 지정하려면 어떻게해야합니까? –

+1

'throttled'에 매개 변수를 지정하십시오. '_.throttle'은 주어진 인자를 통과시킵니다. – Bergi

+0

고마워요. Prototype에 대해 자세히 살펴 보겠습니다. –