Альтернативные способы изменения контекста
Знаю что можно вызвать функцию с нужным контекстом использую 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, время: 11:55. |