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), но я ищу лучший способ, потому что есть много объектов, и я не хочу, чтобы все было глобально.
Члены 'this' не имеют ничего общего с переменными. В JS «это» не имеет ничего общего с переменной областью. Кроме того, вы не передаете какие-либо функции в свой код. –
Объект, который затем «задал» функцию. В других сценариях я передаю функцию обратного вызова, которая выполняется, когда что-то завершено, и я считаю, что это решение можно решить одним и тем же решением. – kevin