2016-06-23 1 views
0

나는 실제 기능은 좀 더 복잡하다이이 컨텍스트를 자체 호출 함수에 바인드하는 방법은 무엇입니까?

// this is defined here and works just fine. 
(function(){ 
    this.doSomething() 
    // this is undefined here. 
}/*tried .bind(this) here, but it didn't seem to help*)(); 

같은 자기 호출 함수 내에서 this을 얻으려고 노력하지만, 여기에 문제의 간단한 예입니다입니다.

this 문맥을 함수 외부의 var self = this 외에도 위와 같은 자체 호출 함수에 전달하고 내부에서 주소를 self.doSomething()으로 지정하려면 어떻게해야합니까?

+0

'(function (self) { self.doSomething(); }) (this);'? –

+0

화살표 기능? –

답변

0

시도한 방식으로 정상적으로 작동해야합니다.

function test() { 
    (function(){ 
     this.doSomething() 
    }.bind(this))(); // bind this here 
} 

test.call({ 
    doSomething: function() { 
     console.log('hello world'); 
    } 
}); // call test with a dummy object as this 
+0

내가 공유 한 코드 부분이 아니라 다중 중첩 기능에 문제가있는 것 같습니다. –

0

내가 .bind() 메소드가 자기 호출 기능이 작동합니다 생각하지 않습니다 : 내가 보여 test라는 작은 래퍼 함수를 ​​만들었습니다. 그래서 주위에 내 작품이 ...

var that = this; (function(that){ that.doSomething() })(that);

이름은 '이'다른 '자기'와 같은 또는 내 예에 뭔가 '그'당신은 자기 호출 함수에서 '이'키워드를 사용하는 경우 때문에 'this'를 자체 호출 함수로 참조합니다. 따라서 매개 변수를 통해 변수를 자체 호출 함수로 전달하십시오. 이게 도움이 되길 바란다.

관련 문제