많은 사람들이 이 지침을 알고 있습니다. 이 기사의 주요 목적은 우리 회사의 새로운 직원을 교육하는 것입니다.
기본 this 포인터는 다음을 가리킵니다
규칙 1
이 포인터는 obj.fun(), this 포인터와 같이 기본적으로 메서드가 호출될 때 지정된 객체를 가리킵니다. 재미있는 메소드 본문에서 obj를 가리킵니다.
var user = { 이름: 'Duan Guangwei ' };
user.getName = function(){ return this.name; };
user.getName() //'Duan Guangwei' 반환
var user = { name: 'Duan Guangwei' };
user .getName = function(){ return this .name; };
user.getName(); //'Duan Guangwei'
반환 window.name = 'Li Niuniu';
창. getName = user.getName
window.getName(); //'lee妞妞'
getName()을 반환합니다.
규칙 2
메서드 호출 중 메소드에 객체가 지정되지 않은 경우 this 포인터는 기본적으로 window를 가리킵니다. 예: fun(), fun 메소드 본문의 this 포인터는 window를 가리킵니다.
var fun = function(){
return this ;
}
fun(); //Return window 객체
규칙 3 메소드 본문에 없는 코드는 익명 메소드로 실행되는 것으로 간주할 수 있습니다. 규칙 2에 따르면 이 포인터가 창을 가리키는 것으로 추론할 수 있습니다.
이 //window 객체
이 포인터의 기본 포인터 변경
적용 사용
var user = { name: 'Duan Guangwei' };
user.hi= function(message){ return this.name ':' message; 🎜> window.name = 'Li Niuniu'
user.hi('Hello'); //'Duan Guangwei: 안녕하세요' 출력
user.hi.apply(window, ['Hello']) / /Output' Li Nuuniu: Hello'
통화 사용
var user = { 이름: 'Duan Guangwei' };
user.hi= function(message){ return this.name ':' message };
window; .name = 'Li Niuniu'
user.hi('Hello'); //'Duan Guangwei: Hello' 출력
user.hi.call(window, 'Hello') //'Li Niuniu' 출력; : Hello'
생성자에 있는 이 포인터는
생성자에 있는 이 포인터가 기본적으로 생성되는 개체를 가리킵니다.
var User = function(name){
this .name = 이름;
};
User.prototype.hi = function(){
return this.name;
};
var user = new User('Duan Guangwei');
user.hi(); //'Duan Guangwei' 출력
마지막 테스트
최종 출력이 무엇인지 맞춰보세요.
var User = function(name){
this .name = 이름;
};
User.prototype.hi = function(){
return this.name;
};
var user = new User('Duan Guangwei');
user.hi(); //'Duan Guangwei' 출력
var hi = user.hi;
hi(); 🎜>