Javascript es6使用常量解构对象
我在玩es6解构功能,我做了以下几点Javascript es6使用常量解构对象,javascript,ecmascript-6,Javascript,Ecmascript 6,我在玩es6解构功能,我做了以下几点 const state = { a: 1 }; const ID = 'b'; const newState = { ...state, [ID]: 2 } 如您所见,我使用常量的值作为标识符,生成这个新对象 //newStateValue ==> { a:1, b:2 } 我想知道[ID]是如何工作的 谢谢您可以像这样使用javascript对象中的字符串作为键 let obj = { ['name']: 'Your Name',
const state = { a: 1 };
const ID = 'b';
const newState = { ...state, [ID]: 2 }
如您所见,我使用常量的值作为标识符,生成这个新对象
//newStateValue ==> { a:1, b:2 }
我想知道[ID]是如何工作的
谢谢您可以像这样使用javascript对象中的字符串作为键
let obj = {
['name']: 'Your Name',
};
现在这里的键是name来访问它的值,我们使用obj.name同样的方法,如果使用一个表示字符串的变量作为键,它将被它的值替换,就是这样,请看下面的示例
让obj={
['name']:'Your name',
};
让myName='name';
让另一个对象j={
[我的名字]:“你的名字”,
};
console.log(obj.name);//你的名字
console.log(anotherObj.name);//您的名字
已被调用,但与您的名字无关
属性名称。这允许您将表达式放在括号[]中,
它将被计算并用作属性名称。这是
让人想起属性访问器语法的括号符号,
您可能已经使用它来读取和设置属性。现在你
也可以在对象文本中使用类似的语法
等于:
const id = "b";
const obj = {};
obj[id] = 1;
与往常一样,可以在Ecma规范中的零件内部找到语法:
对象的编写方式如下:
{[id]:2}
ObjectLiteral:
{}
{PropertyDefinitionList}
属性定义列表只是一些逗号分隔的属性定义:
[id]:2
PropertyDefinitionList:
属性定义
PropertyDefinition列表,PropertyDefinition
propertyDefinition可能是以下内容之一:
属性定义:
识别参考
CoverInitializedName
PropertyName:AssignmentExpression
方法定义
我们的是一个属性名称:AssignmentExpression
,所以
[id]
是一个属性名称
,它是一个计算属性名称
。
所以下一次,只需在文档中查看它;) 你说的“它是如何工作的”是什么意思?这里的答案似乎是“因为语言说它可以”。是的,也许我的问题应该是在哪里可以找到语言的文档,它说你可以这样做它等于
newState[ID]=2
该代码的[ID]
部分与解构无关。
[id]