Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   правильная передача ссылки на объект в классе (https://javascript.ru/forum/css-html/3435-pravilnaya-peredacha-ssylki-na-obekt-v-klasse.html)

Riim 18.04.2009 18:31

Может стоит тогда ссылки на LI и XMLHttpRequest засылать как аргументы. Тогда в this будет то, что и должно в них быть. Или наоборот: первый аргумент - ссылка на текущий экземпляр, this - ссылка на LI/XMLHttpRequest.
Или вообще изврат: this - ссылка на объект с двумя свойствами, одно из которых ссылка на текущий экземпляр, а другое LI/XMLHttpRequest.

belbek 18.04.2009 19:29

Такое уже пробовал. В любом случае, спасибо.
 
Цитата:

Сообщение от Riim (Сообщение 17027)
Может стоит тогда ссылки на LI и XMLHttpRequest засылать как аргументы. Тогда в this будет то, что и должно в них быть. Или наоборот: первый аргумент - ссылка на текущий экземпляр, this - ссылка на LI/XMLHttpRequest.
Или вообще изврат: this - ссылка на объект с двумя свойствами, одно из которых ссылка на текущий экземпляр, а другое LI/XMLHttpRequest.

Такое уже пробовал. В любом случае, спасибо.

x-yuri 23.04.2009 21:45

а это не самый распространенный путь в memory leak'и?
node.on... = function() {
    ...node...
}

я так подозреваю, что не обязательно даже использовать node внутри функции

x-yuri 23.04.2009 21:49

можно id элемента в качестве параметра передавать
p.s. не понял, почему не получилось
Цитата:

Может стоит тогда ссылки на LI и XMLHttpRequest засылать как аргументы. Тогда в this будет то, что и должно в них быть. Или наоборот: первый аргумент - ссылка на текущий экземпляр, this - ссылка на LI/XMLHttpRequest

Riim 23.04.2009 22:06

Цитата:

Сообщение от x-yuri
а это не самый распространенный путь в memory leak'и?

самый :)

Цитата:

Сообщение от x-yuri
можно id элемента в качестве параметра передавать
p.s. не понял, почему не получилось

Все получилось (у меня, по крайней мере), просто сейчас еще раз перечитал ТС и понял: нужно !вообще! без замыканий. Т. е. даже id элемента нельзя: вообще никаких аргументов.
Только event, который сам по себе крепится. У event-а есть target, который в обоих случаях будет тем же this (или undefined).
Значит, остается только прицепиться к this. Нужно просто то, что хочется засылать как аргументы прикреплять к будущему this как свойства.

Примерно так:

перед строкой
document.getElementById(id).getElementsByTagName(" li")[i].addEventListener("click", this.clickHandler, false);
добавить
document.getElementById(id).getElementsByTagName(" li")[i].currentTree = this;
и далее в Tree.prototype.clickHandler получить текущий экземпляр можно так: this.currentTree

x-yuri 23.04.2009 22:20

Цитата:

У event-а есть target который в обоих случаях будет тем же this
точно в обоих?
Цитата:

Нужно просто то, что хочется засылать как аргументы прикреплять к будущему this как свойства
а this не должен указывать на li/xmlhttprequest соответственно в этих 2х случаях?

Riim 23.04.2009 22:45

Цитата:

Сообщение от x-yuri
точно в обоих?

Не проверял, но вряд ли там будет что-то полезное в данном случае.

Цитата:

Сообщение от x-yuri
а this не должен указывать на li/xmlhttprequest соответственно в этих 2х случаях?

Он как раз на них и указывает. Т. е. нет доступа к текущему экземпляру. Вот я и предлагаю дописать его к li/xmlhttprequest.

x-yuri 23.04.2009 23:29

Цитата:

Не проверял, но вряд ли там будет что-то полезное в данном случае
[readystatechange] ie: srcElement - null, ff: target - xmlhttprequest
Цитата:

Он как раз на них и указывает. Т. е. нет доступа к текущему экземпляру. Вот я и предлагаю дописать его к li/xmlhttprequest
кстати да, я сначала подумал, что ты предлагал для обоих случаев к li this добавлять :secret:


Часовой пояс GMT +3, время: 16:29.