그것은 그 객체의 특정 인스턴스의 속성에 액세스 관하여, 성능에 대해 아니에요 -
x.init()
당신이 기능에 this
를 사용하지 않았다면 '시험'을 표시하지 않을까요.
효과적으로 상기 라인은 동일하다 : -
x.init.call(x);
함수가 실행될 때 this
에 할당 call
의 사용 제 paramater.
지금 생각해 -
var fn = x.init; //Note no() so the function itself is assigned to the variable fn
fn();
지금 당신이 경고에 아무 것도 얻을 수 없습니다. 이 때문에 위의 효율적입니다 : -
fn.call(window);
브라우저에서이 window
개체가 전역 객체의 대명사 자바 스크립트 개최했다. 함수가 "원시 상태"로 호출되면 this
은 전역 개체를 기본값으로 사용합니다.
고전적인 오류는 다음과 같이 뭔가를하고있다 : - :
onclick.call(theDOMElement)
- onclick 이벤트에 부착 된 기능과 같은 코드를 사용하여 브라우저에 의해 호출되기 때문에
var x = {
ele: 'test';
init: function(elem) {
elem.onclick = function() { alert(this.ele); }
}
}
x.init(document.getElementById('myButton'));
그러나이 작동하지 않습니다
따라서 함수가 실행 중일 때 this
은 그것이 무엇이라고 생각하지 않습니다. 이 상황에
내 평소 솔루션입니다 : -
var x = {
ele: 'test';
init: function(elem) {
var self = this;
elem.onclick = function() { alert(self.ele); }
elem = null;
}
}
x.init(document.getElementById('myButton'));
참고 elem = null
는 해결 방법 IE의 메모리 누수입니다.
이것은 단지 당신이 아니라 언어의 혼란스러운 측면 중 하나입니다. 좋은 대답을 얻어야합니다. 나는 그들을 읽는 것을 고대하고있다. –