JavaScript的Object下面都有哪些内容呢

88 阅读1分钟

一、Object.assign()

1、初次了解

Object.assign()  方法将所有可枚举Object.propertyIsEnumerable() 返回 true)和自有Object.hasOwnProperty() 返回 true)属性从一个或多个源对象复制到目标对象,返回修改后的对象。

const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };

const returnedTarget = Object.assign(target, source);

console.log(target);
// expected output: Object { a: 1, b: 4, c: 5 }

console.log(returnedTarget);
// expected output: Object { a: 1, b: 4, c: 5 }

2、语法

Object.assign(target, ...sources)
  • target 目标对象,接收源对象属性的对象,也是修改后的返回值。
  • sources 源对象,包含将被合并的属性。
  • 返回值 目标对象。

3、描述

1、如果目标对象与源对象具有相同的KEY的时候,则目标对象中的属性将被源对象中的属性覆盖掉,后面的源对象属性将类似的覆盖钱买你的对象属性。

2、Object.assign方法指挥拷贝源对象可枚举和自身的属性到目标对象。该方法适应了源对象的get和目标对象的set,它会调用getters和setters,所以它分配属性,而不仅仅是赋值或者定义新属性。如果合并包括getters,这可能使其将新属性合并到原型中。

3、为了将属性定义(包括其可枚举性)复制到原型,应使用Object.getOwnPropertyDescriptor() 和 Object.defineProperty(),基本类型 String 和 Symbol 的属性会被复制。

4、如果赋值期间出错,例如如果属性不可写,则会抛出 TypeError;如果在抛出异常之前添加了任何属性,则会修改 target 对象(译者注:换句话说,Object.assign() 没有“回滚”之前赋值的概念,它是一个尽力而为、可能只会完成部分复制的方法)。

备注:  Object.assign() 不会在 source 对象值为 null 或 undefined 时抛出错误。