spread

拓展运算符用的比较多,他的特性有哪些呢?

代码是最直观的了。

basic example

const man = {
  name: 'xhs',
  age: 18
}

const company = {
  name: 'pinee',
  depart: {
    name: 'dev'
  }
}

example1

Object.defineProperty(man, 'sex', {
    value: 'nan',
    writable: true,
    configurable: true
})
man //{name: "xhs", age: 18, sex: "nan"}
{...man} //{name: "xhs", age: 18}

由上面可以发现 扩展运算符不支持enumerable: false的属性

由上面可以发现,扩展运算符只会显示出自有的属性,不会展示继承的属性

example3

可以发现,嵌套的引用的是一个对象。因为 他是一个浅拷贝,只克隆对象本身,不会拷贝嵌套实例。

当然,也可以嵌套解决

example3

可以发现,扩展运算符存在原型属性丢失的情况 。 因为b的构造函数是Bar, b2的构造函数是Object, info是存在Bar的原型的对象上。

  • 扩展运算符不会扩展enumerable: false的属性.

  • 只会扩展自有属性,不会扩展继承的属性

  • 他是一个浅拷贝

  • 原型属性丢失

Last updated