有人能解释一下如何/为什么在JavaScript中使用下面的键分配方法吗?
a = "b"
c = {[a]: "d"}
返回:
Object {b: "d"}
有人能解释一下如何/为什么在JavaScript中使用下面的键分配方法吗?
a = "b"
c = {[a]: "d"}
返回:
Object {b: "d"}
иҝҷжҳҜж–°зҡ„ES2015пјҲд»ҘеүҚз§°дёәES6зҡ„EcmaScript规иҢғпјүи®Ўз®—еұһжҖ§еҗҚиҜӯжі•гҖӮе®ғжҳҜES3/5дёӯдҪ зҶҹжӮүзҡ„someObject[someKey]
иөӢеҖјзҡ„з®ҖеҶҷеҪўејҸпјҡ
var a = "b"
var c = {[a]: "d"}
是语法糖的简写:
var a = "b"
var c = {}
c[a] = "d"
使用[]
确实是在创建JavaScript对象时将变量的实际值用作键/
属性的一种绝佳方法。
我对上面的答案非常满意,很感激它让我能够举一个小例子。
我已经逐行在Node REPL(Node shell)上执行了这段代码。
> var key = "fullName"; // Assignment
undefined
>
> var obj = {key: "Rishikesh Agrawani"} // Here key's value will not be used
undefined
> obj // Inappropriate, which we don't want
{ key: 'Rishikesh Agrawani' }
>
> // Let's fix
undefined
> var obj2 = {[key]: "Rishikesh Agrawani"}
undefined
> obj2
{ fullName: 'Rishikesh Agrawani' }
>
const animalSounds = {cat: 'meow', dog: 'bark'};
const animal = 'lion';
const sound = 'roar';
{...animalSounds, [animal]: sound};
结果将会是
{cat: 'meow', dog: 'bark', lion: 'roar'};
[]
符号来访问或分配该对象的内容。我希望创建一个对象,但是在运行时我不知道key
的名称。
回到ES5时代:
var myObject = {};
myObject[key] = "bar";
写两行代码真的很痛苦...啊,ES6来了:
var myObject = {[key]:"bar"};
如果key
的值等于foo
,那么这两种方法的结果都是:
{foo : "bar"}