2017-03-20 4 views
2

.call이 // log 메소드의 컨텍스트를 obj로 변경해야한다고 가정했으나 // 그 일을하는 것 같지 않습니다.이 객체에 함수를 사용하는 것처럼 윈도우 객체를 참조하는 것으로 보입니다."this"가 console.log를 인수로 사용하는 이유는 무엇입니까?

let obj={ 
    a: "this should work right?" 
} 

console.log.call(obj,this.a);//returns undefined 
+0

인수는 함수를 호출하기 전에 평가를하기 때문에 문맥이'obj'로 설정되어 있지 않습니다 그 시점에서. – Barmar

+0

. this의 'this'가 .call을 사용하여 변경되지 않기 때문에 - Barmar는 더 나은 것을 말했습니다 : p –

+0

* this *는 실행 컨텍스트의 속성이므로 "컨텍스트"라고해서는 안됩니다. – RobG

답변

0

대신이 방법으로 테스트해야, 기능의 범위에없는 : 함수에

let obj={ 
    a: "this should work right?" 
}; 

let myFunc = function() { // u define a function scope here 
    return this.a; 
}; 

console.log(myFunc.call(obj)); 
// console.log.call(obj,this.a);