Альтернативные способы изменения контекста
Знаю что можно вызвать функцию с нужным контекстом использую bind, но сейчас интересует альтернативный способ.
столкнулся с такой ситуацией, когда абсолютно ко всем элементам нужно обратиться не через this, а через this.parent. Ну, думая что самый умный, я и написал this = this.parent да только не прокатило >< есть ли какой-то иной способ такой записи? (без вызова функции с bind, т.е. работаем уже внутри функции) |
var obj = {
a: {
b: function() {
}
}
}
obj.a.b.call(obj);
|
ну не совсем то что имел ввиду, но все равно спасибо
|
Цитата:
Чем запутаннее поставлен вопрос и без примеров хотя бы кусков собственной реализации, тем и меньше желающих помочь и дольше время возврата в итоге к истокам проблемы, которое будет необходимо и без помощи, при решении собственными силами...(О как закрутил... |
Ну вообще вот такая лажа случилась. грубо говоря:
var a = new testA() //где-то в testA this.b = new testB() //где-то в testB this.parrent = a ------------------------ Далее, в testA есть функция, которая вызывается из testB где-то в testA
this.b.SetFunction(this.testAfunction )
testAfunction : function() {.../*Вот тут мне нужен в качестве this объект a*/...}
где-то в testB
SetFunction: function (func){
this.TEST = func
}
testBfunction : funtion(){
this.TEST() //Вот тут this - это объект b и когда вызывается функция, у нее this тоже от объекта b.
}
Для решения этой проблемы я и сделал b.parrent = a И когда я вызываю testAfunction() ---> this.parrent в ней действительно ссылается на a, НО!!! я не могу обратиться к методам a. т.е. допустим к какой-нибудь функции объекта a: где-то в testA
SuperFunction: function() {alert("yes")}
testAfunction : function() {
this.parrent.SuperFunction() //ошибка
}
|
ВРУ. Этот момент работает, кажется ошибка в чем-то другом(
|
Цитата:
http://learn.javascript.ru/prototype...о-f-prototype |
| Часовой пояс GMT +3, время: 03:40. |