значение параметра меняет имя ключа - PullRequest
2 голосов
/ 24 января 2011
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.как бы я это сделал?

Ответы [ 3 ]

3 голосов
/ 24 января 2011

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

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

Вместо:

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

Я бы сделал:

test['two']['parent'] = test['one'];
3 голосов
/ 24 января 2011

почему test.one становится test.parent?

Это не так. Результирующая структура:

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

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

Если вы делаете:

test.one.cheese = "crackers";

... результат ниже будет "взломщики"

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

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

1 голос
/ 24 января 2011

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

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

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

будет пустой объект
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...