2016-10-05 8 views
1

オブジェクトプロパティをオブジェクト宣言自体の内部に直接名前を付けることは可能ですか?オブジェクト作成時に文字列でプロパティの名前を付ける方法はありますか?

var name = "foo"; 
var obj = {}; 
obj[name] = "bar; // obj.foo === "bar" 

しかし、同じように、オブジェクト自体の内部で何とかそれを行うための方法があります:

examleについては、これは動作します

var name = "foo"; 
var obj = { 
    name: "bar" // obj.name === "bar" 
}; 

は、私はプロパティの文字列を使用することが可能である知っています名前のように、これは回避策として行うべきものだと思っていましたが、そうではありませんでした:

var obj = { 
    "" + name: "bar" 
}; 

これを行う方法はありますか?

+0

あなたが優先重複を持っていますか?どうすればhttp://stackoverflow.com/questions/2274242/using-a-variable-for-a-key-in-a-javascript-object-literal? –

+0

@eisbehr:これは約1e10回前に尋ねられ、答えられました。次回の検索を使用してください。 – georg

答えて

2

はそうES5に、ECMAScriptの2015年以降ではその

var name = "foo"; 
 
var obj = { 
 
    [name]: "bar" 
 
}; 
 

 
console.log(obj)

を行う方法はありません、ES2015であり、オブジェクト初期化構文も 計算されたプロパティ名をサポートしています。これにより、式 を角括弧[]に入れることができます。これはプロパティ名として計算されます。これはプロパティアクセッサ構文のブラケット表記と対称的な です。これはすでにプロパティを読み込んで設定していたかもしれません。 今度は もオブジェクトリテラルで同じ構文を使用できます。

Computed properties in object initializers on MDN

+1

これは計算されたプロパティ名と呼ばれています。 –

+0

あなたのコメントは - > // obj.name === 'bar'、あなたはobj.foo === 'bar'を意味しませんでしたか? – Keith

+0

私はノードで作業してうれしいですので、これを使用しても問題ありません! ;) どうもありがとう! – eisbehr

関連する問題