я получил два объекта, т.е.Изменение поведения этого внутри объекта
var Parent = { };
var Child = {
born : function() {
Parent.beHappy = this.study;
},
study : function() {
console.log("Studying!");
console.log("Now I'm going to play");
this.play();
},
play : function() {
console.log("Playing!");
}
}
Теперь, что я делаю
Child.born();
Parent.beHappy();
Как вы можете видеть Parent.beHappy()
вызывает study
метод ребенка. Теперь проблема, которую я испытываю, заключается в методе study
, который я не могу назвать this.play()
. И причина, почему это так, потому что study()
вызывается на Parent
, и поэтому this
здесь относится к Parent
вместо Child
. Есть ли способ, который я могу сделать this
в методе study
, всегда относится к Child
, а не к Parent
? Я знаю, что могу сделать Child.play()
в методе study
, чтобы он работал, но я хотел бы быть последовательным во всем моем коде и предпочел бы this
. Кроме того, я мог бы сделать $.proxy(Parent.beHappy, Child)()
, но я не хочу менять этот вызов функции Parent.beHappy()
, потому что он будет использоваться конечным пользователем. Я пробовал все, и теперь у меня нет идей. Любые предложения будут высоко оценены.
он появляется как будто вы вообще не хотите менять код! –
@Amin Jafari Есть сотни способов сделать что-то, я только указал два, которые мне не нужны. Все еще было 98 других, чтобы выбрать из;) –