2010-02-04 4 views
3

shout()이 계속 호출되는 이유를 설명 할 수 있다면 기쁠 것입니다. 함수는 자신의 등록을 가져오고 지금라는 개체의 독립적 인 : 자바 클래스는 클래스가 null이지만 계속 호출됩니다.

});
x = new myclass();
alert(x);
x=null;
alert(x);

var myclass = new Class({ 
myid: "greatidea", 
initialize: function(element) { 
    var shout = function() { alert(this.myid); }; 
    shout.periodical(5000, this); // test debug 
} 

http://mootools.net/shell/jhCBz/

는 기본적으로, 나는이 아이디어를 얻을 여기를 참조하십시오. 그러나 나는 진짜 설명을 얻게되어 기쁘다.
감사합니다.

답변

1

xmyclass을 참조했습니다. myclassshout을 실행 중입니다. xnull으로 설정하면 myclass 개체 자체가 아니라 myclass이라는 참조를 제거하는 중입니다.

+0

감사합니다. @jball. 함수 호출을 중지하는 또 다른 방법이 있습니까 (정기 타이머 지우기 제외)? – Nir

+1

아니요, '$ clear'에 대한 호출 만이 제가 아는 유일한 방법입니다. – jball

+0

예,주기적인 참조가 클래스의 속성 인 경우에도 실패합니다. http://mootools.net/shell/ZBrm7/1/ 클래스 자체를 제거하더라도 계속됩니다. 매우 짜증나지만 - $ clear (this.timer)를 수행하는 .destroy() 메소드를 코딩해야 할 수도 있습니다. –

6

기능은 입니다. 항상입니다. 함수에 대한 참조가 존재하는 한, 그것은 계속 존재합니다. 이 경우에는 객체에 대한 참조도 (this을 통해) periodical() 함수에 전달되었으므로 객체도 마찬가지입니다.이 함수는 컨텍스트에 대해 보유합니다.

관련 문제