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

キー名を変更している:それは実際に持っている設定値は、私がテストを持っていたいもの

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

何:

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

をtest.parentなっtest.oneんなぜですか?

test.two.parentにtest.oneへの参照を保持させます。どうすればいい?この文が何のよう

+0

あなたはそれが起こっていることをどう思いますか?そうではありません。 – Pointy

答えて

3

をtest.oneがtest.parentになるんなぜですか?

これはありません。得られた構造は以下の通りである:oneによって参照されるようparentが同じオブジェクトを参照している

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

そうした場合:

test.one.cheese = "crackers"; 

...以下の結果が "クラッカー" となります

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

例:http://jsfiddle.net/g5chF/

+0

ご迷惑をおかけして申し訳ありませんが、私の問題は明らかに上記の出力を示すバグがあるデバッガにあります – knicnak32

1

あなたの主張:

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

が正しくありません。コードは既にあなたが望むことを行います。test.twoに「親」属性を追加すると、空のオブジェクトがtest.two.parentになります。

3

どのブラウザをお使いですか?それは違いを生むかもしれません。

FirefoxのFirebugで期待される結果が得られましたが、プロパティのアクセス構文(構文?syntaxen?)を混在させて一致させることはお勧めしません。

の代わりに:

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

私はどうなる:

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

全く必要ありません。プロパティにアクセスする方法と定義する方法のいずれかが機能します。 – Pointy

+0

@ Pointy、私は原作がうまくいっていると言いました、残りは一貫性を保つための提案でした。 – zzzzBov

+0

これは良い点だと思います。 'test.two.parent = test.one'もここで動作します。 – Pointy

関連する問題