为什么在控制台记录时具有属性 [name] 的 JS 对象会变成具有“结果”属性的对象?

我已经定义了一个 JS 对象,如下所示:


var obj = {

    [name]: 'TESTING 201909061509'

}


但是当我控制台记录它时,打印的内容变成了如下所示:{result: "TESTING 201909061509"}


慕妹3242003
浏览 199回答 3
3回答

呼啦一阵风

这是因为变量名的值实际上是字符串“result”。这种访问对象属性的方式称为方括号表示法,它主要用于希望对象的属性是Symbol(原始值)而不是有效的 JavaScript标识符时。您甚至可以将其作为表达式的结果:var obj = { [3+5]: "some value" };这将导致:{ 8: "some value" }

慕哥9229398

除了 Maiko Morales Roman 的回答之外,如果括号内的表达式是 Object 类型,则您定义的属性将成为 [Object Object]。换句话说,对象将首先转换为字符串。const keyA = {a: 1};const keyB = {b: 2};const myObject = {  [keyA]: 'valueA',  [keyB]: 'valueB'};myObject // Object {[object Object]: "valueB"}如果要使用变量及其值设置属性,可以这样编写代码:let birth = '2000/01/01';const Person = {  // birth: birth  birth};

MM们

在 javascript 中,键可以带或不带引号定义,如果您更喜欢在键中使用方括号,则可以将键名放在引号内,如下面的方法var obj = {    ['name']: 'TESTING 201909061509'}或者var name = 'name';var obj = {   [name]: 'TESTING 201909061509'}通常我们可以像下面这样使用var obj = {    name: 'TESTING 201909061509'}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript