Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Область видимости переменной. (https://javascript.ru/forum/events/6528-oblast-vidimosti-peremennojj.html)

noumo 03.12.2009 13:44

Область видимости переменной.
 
Только недавно начал разбираться в основах ООП в JS.
Возникла небольшая проблема. Есть скрипт:
function someFunc(div,val){
	this.obj = div;
	this.foo = val;
	
	$('#'+this.obj).click(function(){
		alert(this.foo);
	})
}

почему то выводит "undefined", как мне обратиться к переменной this.foo в теле подфункции? (самое интересное что просто val выводится)
Подскажите люди добрые :)

Octane 03.12.2009 18:31

function someFunc(div,val){
    this.obj = div;
    this.foo = val;
    var _this = this;
    $('#'+this.obj).click(function(){
        alert(_this.foo);
    })
}

Замыкания

noumo 03.12.2009 23:39

Большое спасибо, до этой главы я еще не дошел :) Конечно не такое эстетичное решение какое хотелось бы, но все же...

Octane 03.12.2009 23:48

Цитата:

Сообщение от noumo
Конечно не такое эстетичное решение какое хотелось бы, но все же...

Контекст выполнения function () { alert(this.foo); } не имеет никакого отношения к экземпляру someFunc, this там указывает на DOM-элемент с идентификатором.


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