2013-08-17 1 views
1

jquery 키워드 self는 self.setInterval에서 무엇을 참조합니까? JQuery와 일부 프로그래머 가변 self 또는 thatthis 인 작동 범위를 지칭하도록 사용 자바 스크립트jquery 키워드 self는 self.setInterval에서 무엇을 참조합니까? jquery

var int=self.setInterval(function(){clock()},1000); 
+0

무엇이 문제인지 이해하기 어렵습니다. –

+0

우리는 당신의 마음을 읽을 수 없습니다. 간단히 설명해주십시오. –

+1

이 중 아무 것도 jquery와 관련이 없습니다. 'self'는 같은 범위의 어딘가에 정의되지 않은 한'window '를 참조합니다. –

답변

2

. this 개체는 현재 개체 또는 기능을 참조합니다.

다른 함수에서 함수가 실행되면 this이라는 참조가 손실됩니다. 간단한 해결 방법은 기능 외부의 변수로 this을 설정하는 것입니다.

은 (IE8 호환, 확실하지 IE7에 대한 낮은) 또는 최신 브라우저 (function(){}.bind(this))

UPDATE에 대한 JQuery와 $.proxy(function, this)을 사용하여 이러한 참조를 피할 수있는 방법이 있습니다

패트릭이 지적한 바와 같이, self 기본적으로 활성 window을 참조합니다. 유용한 내부 프레임 예를 들어.

http://www.w3schools.com/jsref/prop_win_self.asp

+2

자체는 달리 정의되지 않는 한'window'를 참조합니다. –

+0

맞습니다, Patrick. 이것에 대해 잊어 버리 셨습니다. ^^ –

2

self 자바 스크립트에서 예약어가 아닙니다. 그러나, 현재의 방법으로 실행 개체에 self를 할당하는 일반적인 규칙이있다 예를 들면 :.

var myobj = { 
    mymethod: function() { 
     var self = this; 
    }, 
}; 
그 이유는 당신이 다른 멋진 일을 할 수 있도록 변수에 this를 백업하는 것입니다

부모 객체에 영향을주는 비동기 콜백과 같은

아마도 우리가 더 많은 컨텍스트를 제공 할 수 있다면 우리는 문제에서 self 변수가 무엇을 설정하는지 설명 할 수 있습니다.

+4

기본적으로'self'는'window'와 같습니다. –

7

self이 동일한 범위에 정의되어 있지 않으면 Window 개체에 대한 참조입니다. Window 객체에는 실제로 2 개의 자체 참조 변수가 있습니다. selfwindow

이상한 기분 일 경우 self.window.self.window.self.window.self.window.self과 같이 할 수 있습니다. 같은 코드로

var int=self.setInterval(function(){clock()},1000); 

또한

var int = setInterval(function(){clock()},1000); 

또는

var int = window.setInterval(function(){clock()},1000); 

방금 ​​할 수

setInterval(clock,1000); 
에 해당

시계를 실행하는 것 외에 다른 작업을 수행해야하는 경우가 아니면 익명 기능으로 포장 할 필요가 없습니다.

window.self

+0

'top'은 브라우저에서'window'에 대한 또 다른 참조입니다. – bfavaretto