2

重複の可能性:
JavaScript プロパティへのアクセス: ドット表記 vs. ブラケット?

<script>      
  var foo = {          
    name: 'kevin'        
  };

  document.write(foo.name);
  document.write(foo['name']);

  var cool = 'name';
  document.write(foo.cool);

  document.write(foo[cool]);      
</script>
  1. なぜ はfoo.coolundefined where as を返しますfoo[cool] returns me kevin
  2. クールは実際にfooオブジェクトの私のnameプロパティをどのように参照しますか.
4

3 に答える 3

4
  1. coolプロパティは で定義されていないためfoofoo.cool未定義です。もしそうならfoo.name、それは戻りkevinます。

  2. coolinfoo[cool]はその上の行で定義したものなので、実際にはfoo['name']であり、これは定義されており、値は ですkevin

于 2012-12-29T22:46:23.107 に答える
1

In var foo = { name: 'kevin'}; オブジェクトまたは辞書をその変数に保存します...これは現在キーと値のペアです...そのため、キーを使用してオブジェクトの値にアクセスできます...

これはキーと値のペアであるため、「.」を使用してアクセスすることはできません。演算子... foo はクラスではないため... foo の型は辞書またはオブジェクトになります...

したがって、値にアクセスするには、[] 括弧を使用する必要があります...

于 2012-12-29T22:56:18.147 に答える
1

次のいずれかのプロパティにアクセスできます...

  • 文字通り彼らの名前で:property.name

  • それらの名前に評価される式によって間接的に: property[expr].

したがって、式coolに値がある場合'name'、はまたはfoo[cool]と同じです。foo['name']foo.name

ブラケットにより、...

foo["data_"+variable]1) のような名前のフィールドに簡単にアクセスするような、より複雑な式data_something
2) 単純な識別子ではないプロパティ名、たとえばfoo["I'm long!"].

この説明があなたにとって明るいものになることを願っています。

于 2012-12-29T22:54:11.380 に答える