Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как в событие объекта передать свойство метода (https://javascript.ru/forum/events/7843-kak-v-sobytie-obekta-peredat-svojjstvo-metoda.html)

DVVID 22.02.2010 08:45

Как в событие объекта передать свойство метода
 
Добрый день,
Создаю класс, следующего содержания:
function NewClass(){
    this.a = 5;
    this.img = document.createElement('img');
    this.img.onclick = function(){[B]Как в этом месте получить this.a[/B]}
}


Ни чего не могу найти подходящего.

Gvozd 22.02.2010 08:48

function NewClass(){
    this.a = 5;
    this.img = document.createElement('img');
    _this=this;
    this.img.onclick = function(){alert(_this.a);}
}

http://javascript.ru/basic/closure

DVVID 22.02.2010 08:54

Такой способ не подходит либо я не до конца разобрался с созданием классов в js. Смысл в следующем пишу класс для создания окна в браузере(Окно представляет из себя див с кнопкой закрытия, сворачивания, табличной частью и других необходимых для объекта свойств, вообщем имитация окна) и когда я создаю в браузере несколько окон в _this попадает свойство последнего открытого окна.

limonad 22.02.2010 10:08

function NewClass(){
    this.a = 5;
    this.img = document.createElement('img');
    this.img.a=this.a;
    this.img.onclick = function(){alert(this.a);}
}

DVVID 22.02.2010 10:18

Работает, limonad спасибо!:thanks: Только на сколько это правильно и не возникнут ли не предвиденные ситуации в дальнейшем?

Kolyaj 22.02.2010 10:29

Цитата:

Сообщение от DVVID
и когда я создаю в браузере несколько окон в _this попадает свойство последнего открытого окна.

Потому что var нужен.
var  _this=this;

DVVID 22.02.2010 10:41

VAR нужен, но для всех созданных объектов на основе этого класса переменные объявленные через var имеют одинаковые значения.

Kolyaj 22.02.2010 11:23

Цитата:

Сообщение от DVVID
VAR нужен, но для всех созданных объектов на основе этого класса переменные объявленные через var имеют одинаковые значения.

С чего вы взяли?

DVVID 22.02.2010 12:30

Цитата:

Сообщение от Kolyaj (Сообщение 45689)
С чего вы взяли?

Я разобрался почему так происходило, сам виноват на оном из сайтов нашел правильное создание классов в кавычках, в связи создал кучу кода написанного способом указанным ниже. При вызове метода Alert возвращаться будет значение переменной созданное последним экземпляром класса:
function Class1(T){
	var TC = T;
	Class1.prototype.Alert = function(){
             alert(TC);
        }	
}


Только сейчас нашел, как все работает нормально:

function Class1(T){
    this.TC = T;		
}
Class1.prototype.Alert = function(){
    var TC = this.TC;
    alert(TC);
}

При таком способе взаимодействия все работает отлично!
Всем спасибо!


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