Получение ссылки на объект из метода
Здравствуйте.
Столкнулся с такой ситуацией: от функции к функции передается анонимный объект с большим количеством методов, для более упорядоченной структуры, методы помещены внутрь атрибутов этого объекта, например: function Test() { this.str = 'test'; } Test.prototype = { fn1: function() { alert(this.str); }, fn: { fn2: function() { alert('????'); } } }; new Test().fn.fn2(); как в этом случае в функции fn2 получить ссылку на родительский объект и добраться до его атрибута str? |
function Test() { this.str = 'test'; } Test.prototype = { fn1: function() { alert(this.str); }, fn: { var self = this; fn2: function() { alert(self.str); } } }; new Test().fn.fn2(); |
Kolyaj, там объект, а не функция.
|
Snipe, и правда, не прокатит.
|
так не делать и всё будет ОК
|
Эх, такая была удобная конструкция, видимо придется переделывать :-(
Всеравно как-то не верится, что в JavaScript нет специальных средств типа «this», «constructor» и «arguments.callee», чтобы добраться до«верхнего» родительского объекта. |
Хм, а если делать вот так:
function Test() { this.str = 'test'; } Test.prototype = { fn1: function() { alert(this.str); }, fn: { self: function(obj) { return obj; }(this), fn2: function() { alert(this.self.str); } } }; new Test().fn.fn2(); Только в self теперь записывается ссылка на window :( |
Лично я использую вложенные объекты, как удобную иерархическую структуру данных. А завязывать как-то функционал ООП на ней неполучается, да и это лишнее, помоему.
|
Часовой пояс GMT +3, время: 18:26. |