es6,省略字段名的问题

有以下参数:

  let a = 1
  let person = {
        firstName: "XXX11111",
        lastName: "YYY",
        phone: "18384130030",
        email: "cd111111@jd.com"
    }

  1.console.log(Object.assign({}, a, person))
  
  结果:{
        firstName: "XXX11111",
        lastName: "YYY",
        phone: "18384130030",
        email: "cd111111@jd.com"
    }
 2.console.log(Object.assign({}, {a:a}, person))
  结果:
    {
        a: "1"
        firstName: "XXX11111",
        lastName: "YYY",
        phone: "18384130030",
        email: "cd111111@jd.com"
    }
    

我之前看到es6中,省略字段名就默认使用后面的字段名(现在没有找到了),第1种结果应该和第2中结果一样啊

阅读 2.7k
3 个回答

你说的这种情况叫做解构。
试试下面的代码:

console.log(Object.assign({}, {a}, person))
Object.assign()里面的参数要是对象才行啊,第一种写法里面a是一个变量,你应该写成console.log(Object.assign({}, {a}, person))才对。

某变量在创建对象作为属性的时候,可以省略赋值声明,比如 { a }

将一个对象所有属性全部赋值给一个新对象的时候,使用展开(Spread) 运算,比如上面的 assign 语句可以改成 { a, ...person },这里 a 没有用 {} 包起来,因为它就是作为新对象的属性来的,相当于 { a: a, ...person },也可以先封装成对象,再展开 { ...{a}, ...person }

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进