为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕妹3242003 2021-10-07 11:02:02
我已经定义了一个 JS 对象,如下所示:var obj = {    [name]: 'TESTING 201909061509'}但是当我控制台记录它时,打印的内容变成了如下所示:{result: "TESTING 201909061509"}
查看完整描述

3 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

这是因为变量名的值实际上是字符串“result”。

这种访问对象属性的方式称为方括号表示法,它主要用于希望对象的属性是Symbol(原始值)而不是有效的 JavaScript标识符时

您甚至可以将其作为表达式的结果:

var obj = { [3+5]: "some value" };

这将导致:

{ 8: "some value" }


查看完整回答
反对 回复 2021-10-07
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

除了 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


};


查看完整回答
反对 回复 2021-10-07
?
MM们

TA贡献1886条经验 获得超2个赞

在 javascript 中,键可以带或不带引号定义,如果您更喜欢在键中使用方括号,则可以将键名放在引号内,如下面的方法


var obj = {

    ['name']: 'TESTING 201909061509'

}

或者


var name = 'name';

var obj = {

   [name]: 'TESTING 201909061509'

}

通常我们可以像下面这样使用


var obj = {

    name: 'TESTING 201909061509'

}


查看完整回答
反对 回复 2021-10-07
  • 3 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号