2011-01-24 3 views
2
var test = { 
    one: {}, 
    two: {}, 
}; 
test['two'].parent = test['one']; 

то, что я хочу тест, чтобы иметь:значение параметра изменяется имя ключа

test = { 
    one: {}, 
    two: { parent: {}, } 

что это на самом деле имеет:

test = { 
    parent: {}, 
    two: { parent: {}, } 

почему test.one стать test.parent?

Я хочу, чтобы test.two.parent содержал ссылку на test.one. как бы я это сделал?

+0

Что заставляет вас думать, что это происходит? Это не так. – Pointy

ответ

3

почему test.one стать test.parent?

Это не так. В результате чего структура:

{ 
one: {}, 
two: { parent: {} } 
} 

Где parent ссылается на тот же объект, как ссылается one.

Если вы:

test.one.cheese = "crackers"; 

... ниже будет результат "сухари"

alert(test.two.parent.cheese); // "crackers" 

Пример:http://jsfiddle.net/g5chF/

+0

жаль, что вы правы, моя проблема была в отладчике, у которого явно есть ошибка, которая показала мне вышеприведенный вывод – knicnak32

1

Ваше заявление относительно того, что делает это утверждение:

test['two'].parent = test['one']; 

неверен. Код уже делает то, что вы хотите: он добавляет атрибут «parent» к test.two, так что будет пустой объект в test.two.parent.

3

Какой браузер вы используете? Это может иметь значение.

Я получаю ожидаемое тестирование результатов в Firebug на Firefox, однако я бы не предложил смешивать и сопоставлять синтаксис доступа к синтаксису (синтаксис? Syntaxen?).

Вместо:

test['two'].parent = test['one']; 

Я хотел бы сделать:

test['two']['parent'] = test['one']; 
+2

Полностью не нужен; любой способ доступа или определения свойств будет работать. – Pointy

+0

@Pointy, я упомянул, что оригинал работал, остальное было предложением оставаться последовательным. – zzzzBov

+0

Хорошо, я думаю, это хороший момент. 'test.two.parent = test.one' также будет работать здесь. – Pointy

Смежные вопросы