Possible Duplicate:
JavaScript property access: dot notation vs. brackets?構文の違い
のは、私はオブジェクトを持って考えてみましょう:私はこのようなプロパティにアクセスすると
var o = { x:1, y:2 };
違いは何ですか。これに比べ
o.x
:
o["x"]
Possible Duplicate:
JavaScript property access: dot notation vs. brackets?構文の違い
のは、私はオブジェクトを持って考えてみましょう:私はこのようなプロパティにアクセスすると
var o = { x:1, y:2 };
違いは何ですか。これに比べ
o.x
:
o["x"]
。
唯一の本当の違いは、ブラケット表記を使用すると、変数の命名規則に背くとのようなものを行うことができますということです。また
o.3213adascas #@%! = 5;
以来:次は明らかに構文エラーですが
o["3213adascas #@%!"] = 5;
ブラケット記法では、変数を使用できる文字列を取ります:
var o = { x:1, y:2 };
var member = 'y';
console.log(o[member]); // Outputs 2
o.x
は、実質的にはo["x"]
の構文砂糖です。彼らは同じことをする。しかし、角括弧表記はアクセスにプロパティ名として変数の値を使用するように、たとえばことができます:
var someString = "x";
o[someString];
だけでなく、このように、プロパティ名は有効な識別子、角括弧表記でない場合使用する必要があります。これらはMember Operatorsと呼ばれ、そのリンクでそれらの情報の良いビットがあり
var myObj = {
"space property": 1
};
myObj["space property"];
そこには違いありません - まったく同じことが...しかし、スペース/あいまいな文字でキーを有効ん:
o['something here'] = "test";
は、例えば動作しますが、この文句を言わない:
o.something here = "test";
角括弧表記有利である。プロパティを動的に設定することができます。
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つは全く同じことを行います。
アクセス任意の文字列を持つプロパティ:しかし、ブラケット表記(o["x"]
)は、あなたがドット表記(o.x
)を行うことができない2つのことを行うことができます。たとえば、o["function"]
とo["432 %^$ ==="]
は有効な構文ですが、function
はキーワードであり、o.432 %^$ ===
は構文エラーであるため無効なため、o.function
は無効です。
オブジェクトの動的プロパティを設定します。 var str = "prop";
を実行し、括弧表記でo[str]
にアクセスできます。