2012-05-19 2 views
3

this객체 메소드를 참조 할 때 변수에 저장해야합니까? (자바 스크립트) 나는 자바 스크립트를 참조

var myObj = { 
    method1 : function() {}, 
    method2 : function() {}, 
    method3 : function {}, 
    init : function() { 
     this.method1(); 
     this.method2(); 
     this.method3(); 
    } 
}; 

사용하여 오브젝트를 여러 번 성능 향상의 어떤 종류가 있습니까 나는 변수에 this 저장해야? 마찬가지로 :

init : function() { 
    var self = this; 

    self.method1(); 
    self.method2(); 
    self.method3(); 
} 
+3

아니요 ............. –

+0

'자기'의 사용을 분명히 오해하고 있습니다. – Alexander

+0

설명해 주실 수 있습니까? – Maverick

답변

4

당신이 폐쇄에 그 컨텍스트를 전달해야하지 않는 한, 변수에 this 참조를 저장할 필요가 없습니다. 여기

는 같은 this 포인터의 외부, 부모 컨텍스트에서 가리키는 된 무엇에 대한 참조를 필요로하는 요소에 대한 클릭 이벤트로, 폐쇄에 this 포인터를 전달해야하는 경우의 예입니다 이벤트 : 귀하의 경우

init : function() { 

    $('.someElem').click( 
     (function(self) { 
      return function() { 
       self.method1(); 
       self.method2(); 
       self.method3(); 
      } 
     })(this) // pass "this" into the "self" parameter as an argument 
    ); 

} 

, 당신은 불필요하게 로컬 변수를 작성하고 당신이 정말로 필요하지 않을 때 그에게 뭔가를 할당하고 있습니다. 그것은 불필요한 변수이며 필요하지 않은 변수를 만듭니다.

+0

답변 해 주셔서 감사합니다! 여러 번 호출되는 this.property1.something과 같이 객체의 속성에 대한 호출이 여러 번 있거나 변수에 저장해야하는 경우에도 동일하게 적용됩니까? – Maverick

+1

'this.property1.something'은 지역 변수 IF에 할당되면 이익을 얻을 수 있습니다.'.something'은 값 비싼 방식으로 dom에서 계산됩니다. 또한 일련의 조작을 수행하고 결과를 '유지'해야하는 경우 (다시 말해, 가장 가능성이 높은 dom은 releated) – Andrew

+0

@Andrew - 이는 매우 좋은 지적입니다! 그 점을 지적 해 주셔서 감사합니다. – jmort253

관련 문제