let o = {}
let p = {}
function func(){
switch(this){
case o:
document.write('o<br />');
break;
case p:
document.write('p<br />');
break;
case window:
document.write('window<br />');
break;
}
}
func();
func.apply(o);
func.apply(p);
func() 로서 호출하게 되면 이 this의 값은 window가 됩니다.
그럼 세번째가 실행됩니다. 그다음 break문이 실행되서 끝납니다.
두 번째
func.apply (o) 첫번째 인자로 this의 값은 o으로 되서 첫번째문 실행
입니다.
func.apply (o)하면 o라는 객체의 메소드가되고
func.apply (p)하면 p라는 객체의 메소드가됩니다.
함수는 어떻게 호출하느 냐 에 따라서 window에서 불러지기도 하고 o라는 객체 p라는 객체에서
불리기도 합니다.
함수가 어떠한 소속이냐에 따라 this에 값은 다릅니다.
이글은 생활코딩을 참고해서 만든 포스팅입니다. egoing님 감사합니다.
'JAVASCRIPT' 카테고리의 다른 글
상속 기능의 추가 (0) | 2020.11.09 |
---|---|
상속 과정편 (0) | 2020.11.09 |
this 객체로서의 함수 (0) | 2020.11.05 |
this (0) | 2020.11.05 |
생성자와 new 객체지향 (0) | 2020.11.04 |