Доступ к элементам объекта

Обсуждение вопросов клиентского программирования.

Модератор: Duncon

Ответить
Аватара пользователя
Oleg_Rus
Сообщения: 330
Зарегистрирован: 16 окт 2006, 09:56
Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
Контактная информация:

19 мар 2015, 03:17

Код: Выделить всё

var item = {
	result: [[1,2,3],[4,5,6],[7,8,9]],
	swap: {
		transposing: function () {
			function transposing_small($a, $b) {
				arr = parent.this.result;
				alert(arr);
			}
			transposing_small(0, 0);
		}
	}
}
1. Код говорит, что переменная arr не определена - undefined
2. если вызывать ф-ию transposing_small(this.result, 0, 0) - arr = undefined

В чем ошибка? Как я могу получить доступ к массиву result из ф-ии transposing_small?
Как получить доступ к родительскому объекту?
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

19 мар 2015, 09:00

На момент вызова transposing_small вызов this вернет объект, который присвоен swap. То есть внутри объекта только функция.
А вот до item вообще не достучаться, поскольку swap содержит ссылку на уникальный экземпляр класса.
Это все равно что запись в дельфи:

Код: Выделить всё

SomeClass class
someField1 : integer;
someField2 : TSomeClass;
....
function TSomeClass.GetParentValue()
begin

end;
Очевидно, что из GetParentValue не достучаться до someField1, поскольку класс не наследуется, а просто существует в виде экземпляра в памяти, на который указана ссылка в каком то другом объекте/классе
It's a long way to the top if you wanna rock'n'roll
Ответить