2012-03-02 9 views

答えて

4

唯一の本当の違いは、ブラケット表記を使用すると、変数の命名規則に背くとのようなものを行うことができますということです。また

o.3213adascas  #@%! = 5; 

以来:次は明らかに構文エラーですが

o["3213adascas  #@%!"] = 5; 

ブラケット記法では、変数を使用できる文字列を取ります:

var o = { x:1, y:2 }; 
var member = 'y'; 
console.log(o[member]); // Outputs 2 
2

o.xは、実質的にはo["x"]の構文砂糖です。彼らは同じことをする。しかし、角括弧表記はアクセスにプロパティ名として変数の値を使用するように、たとえばことができます:

var someString = "x"; 
o[someString]; 

だけでなく、このように、プロパティ名は有効な識別子、角括弧表記でない場合使用する必要があります。これらはMember Operatorsと呼ばれ、そのリンクでそれらの情報の良いビットがあり

var myObj = { 
    "space property": 1 
}; 
myObj["space property"]; 
2

そこには違いありません - まったく同じことが...しかし、スペース/あいまいな文字でキーを有効ん:

o['something here'] = "test"; 

は、例えば動作しますが、この文句を言わない:

o.something here = "test"; 
2

角括弧表記有利である。プロパティを動的に設定することができます。

From JavaScript Garden

var foo = {name: 'Kitten'} 
foo.name; // kitten 
foo['name']; // kitten 

var get = 'name'; 
foo[get]; // kitten 

foo.1234; // SyntaxError 
foo['1234']; // works 

Both notations are identical in their workings, with the only difference being that the square bracket notation allows for dynamic setting of properties, as well as the use of property names that would otherwise lead to a syntax error.

2

これらの2つは全く同じことを行います。

  1. アクセス任意の文字列を持つプロパティ:しかし、ブラケット表記(o["x"])は、あなたがドット表記(o.x)を行うことができない2つのことを行うことができます。たとえば、o["function"]o["432 %^$ ==="]は有効な構文ですが、functionはキーワードであり、o.432 %^$ ===は構文エラーであるため無効なため、o.functionは無効です。

  2. オブジェクトの動的プロパティを設定します。 var str = "prop";を実行し、括弧表記でo[str]にアクセスできます。

関連する問題