powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Доступ к переменной класса из его метода
6 сообщений из 6, страница 1 из 1
Доступ к переменной класса из его метода
    #38141214
Здравствуйте, только изучаю JS, и никак не могу въехать в суть происходящего вот в таком случае:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
var someObj = {
	innerObj : {
		"key01" : "val01",
		"key02" : "val01"
	},
	goodMethod : function(){
		alert(this.innerObj["key01"]);
	},
	badMethod : function(){
		this.innerObj["key01"] = "someNewVal"
	}
}


При вызове первого метода someObj.goodMethod всё ок, вижу алярм со значением innerObj["key01"]. Т.е. метод нормально "видит" дочерний объект innerObj и может его "прочесть".

НО при вызове someObj.badMethod , значение innerObj["key01"] переназначаться не хочет, а интерпритатор возвращает ошибку:
Can not set property "key01" of undefined

Что я делаю не так? Где ошибка??
...
Рейтинг: 0 / 0
Доступ к переменной класса из его метода
    #38141409
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ничего подобного не наблюдаю
http://jsfiddle.net/vmf5h/
...
Рейтинг: 0 / 0
Доступ к переменной класса из его метода
    #38141449
Паганель, извиняюсь, я дал некорректный (работоспособный) пример кода. Точнее будет вот так:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
var someObj = {
	innerObj : {
		"key01" : "val01",
		"key02" : "val01"
	},
	goodMethod : function(){
		alert(this.innerObj["key01"]);
	},
	badMethod : function(){
		$.each(this.innerObj, function(oKey, oVal)){
			if(oKey == "key01"){
				this.innerObj[oKey] = "someNewVal";
			}
		});
	}
}


Попытка переопределения значения innerObj["key01"] происходит уже внутри вложенной в метод ф-ции, которая, насколько я понимаю, под this понимает уже нечто отличное от класса someObj и соответственно не видит innerObj .

Поэтому уточню свой вопрос: как будет правильно (и максимально эстетично) обратиться к someObj.innerObj изнутри вложенной в метод ф-ции $.each()? Неужели тупо поменять this.innerObj[oKey] на someObj.innerObj[oKey] ?!?!
...
Рейтинг: 0 / 0
Доступ к переменной класса из его метода
    #38141456
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Климов Дмитрий
Код: javascript
1.
2.
3.
4.
5.
6.
7.
badMethod : function(){
		$.each(this.innerObj, function(oKey, oVal)){
			if(oKey == "key01"){
				this.innerObj[oKey] = "someNewVal";
			}
		});
	}



Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
badMethod : function(){
	var th = this;
		$.each(this.innerObj, function(oKey, oVal)){
			if(oKey == "key01"){
				th.innerObj[oKey] = "someNewVal";
			}
		});
}
...
Рейтинг: 0 / 0
Доступ к переменной класса из его метода
    #38141464
Ага, выходит, я почти угадал)
Спасибо за помощь!!!
...
Рейтинг: 0 / 0
Доступ к переменной класса из его метода
    #38141472
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Климов Дмитрийвнутри вложенной в метод ф-ции, которая, насколько я понимаю, под this понимает уже нечто отличное от классану так гляньте там на this под дебагом чтоб не догадываться
я не удивлюсь если там http://api.jquery.com/jQuery.each/ The value can also be accessed through the this keyword
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Доступ к переменной класса из его метода
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]