Object.assign()

1 mdn - Object.assign()

含义:Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象。

语法:Object.assign(target, ...sources);
描述:如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖。

Polyfill:不支持symbol属性,由于ES5中不存在symbols。

深拷贝问题:针对深拷贝,需要使用其他的办法,因为Object.assign()拷贝的是可枚举属性。

          Object.assign 方法只会拷贝源对象自身的并且可枚举的属性到目标对象。该方法使用源对象的[[Get]]和目标对象的[[Set]],所以它会调用相关 getter 和 setter。因此,它分配属性,而不仅仅是复制或定义新的属性。如果合并源包含getter,这可能使其不适合将新属性合并到原型中。为了将属性定义(包括其可枚举性)复制到原型,应使用Object.getOwnPropertyDescriptor()Object.defineProperty() 。

补注:Object.getOwnPropertyDescriptor() 方法返回指定对象上一个自有属性对应的属性描述符。该方法允许对一个属性的描述进行检索,在JavaScript中,属性由name和“属性描述符”对象构成。

一个属性描述符是一个记录:

  1. value 该属性的值(仅针对数据属性描述符有效)

  2. writable 当且仅当属性的值可以被改变时为true。(仅针对数据属性描述有效)

  3. get 获取该属性的访问器函数(getter)。如果没有访问器, 该值为undefined。(仅针对包含访问器或设置器的属性描述有效)

  4. set 获取该属性的设置器函数(setter)。 如果没有设置器, 该值为undefined。(仅针对包含访问器或设置器的属性描述有效)

  5. configurable 当且仅当指定对象的属性描述可以被改变或者属性可被删除时,为true。

  6. enumerable 当且仅当指定对象的属性可以被枚举出时,为 true。

 Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回这个对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值