function Apple(){
this.name="apple";
}
function Orange(){
this.name="orange";
this.apple = new Apple();
this.apple.onCalled=function(){
alert(this.name);
}
}
Orange.prototype.onCalled=function(){
this.apple.onCalled();
}
var orange = new Orange();
orange.onCalled();
현재 코드는 "사과"를 보여줍니다. "this.apple.onCalled = function()"행을 수정하여 "주황색"을 표시하도록하려면 어떻게해야합니까?함수 인수의 JavaScript 실행 컨텍스트
즉, 다른 객체에 함수를 전달하고 싶습니다. 그러나 해당 함수가 호출 될 때 함수를 실행하는 객체의 변수가 아니라 함수를 전달한 객체의 변수에 액세스하십시오. 분명한 해결 방법은 전역 변수 (예 : orange.name)를 사용하는 것이지만 많은 객체가 있기 때문에 더 나은 방법을 찾고 있으며 모든 것을 글로벌하게하고 싶지 않습니다.
회원 :
http://jsfiddle.net/XrtZe/가에서보세요. JS에서는 'this'는 변수 범위와는 아무런 관련이 없습니다. 또한 코드에서 함수를 전달하지 않습니다. –
그런 다음 함수를 "지정한"개체입니다. 다른 시나리오에서는 무언가가 끝났을 때 실행되는 콜백 함수를 전달하고 있는데, 이는 같은 솔루션으로 해결할 수 있다고 생각합니다. – kevin