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()」の行を「オレンジ」と表示されるように変更するにはどうすればよいですか?
つまり、関数を別のオブジェクトに渡したいのですが、その関数が呼び出されると、関数を実行しているオブジェクトの変数ではなく、関数を渡したオブジェクトの変数にアクセスします。明らかな解決策はグローバル変数(orange.nameなど)を使用することですが、オブジェクトが多く、すべてをグローバル化する必要がないため、より良い方法を探しています。