Object.create 和 Object.assign

2023-10-29
2分钟阅读时长

Object.create

Object.create 是一个静态方法,它创建一个新对象并将其原型设置为指定的原型对象。其语法如下:

Object.create(proto, [propertiesObject]);
  • proto: 新对象的原型。可以是一个对象或 null。
  • propertiesObject (可选): 一个包含属性描述符的对象,其中每个属性描述符对应一个新创建的对象的属性。这些属性描述符具有与 Object.defineProperties()方法相同的格式。
  • Object.create 的作用是创建一个新的对象,该对象的原型链上有指定的原型。通过这种方式,可以实现基于原型继承的对象创建。

示例:

const person = {
  greet: function () {
    console.log("Hello!");
  },
};

const john = Object.create(person);
john.name = "John";

john.greet(); // 输出 "Hello!"

Object.assign

Object.assign 方法用于将一个或多个源对象的属性复制到目标对象中。其语法如下:

Object.assign(target, ...sources);

target: 目标对象,即要将属性复制到的对象。 sources: 一个或多个源对象,从中复制属性到目标对象。多个源对象按参数顺序进行复制,后面的对象属性将覆盖前面的对象属性。 Object.assign 的作用是将一个或多个源对象的属性复制到目标对象中。如果目标对象已经存在同名属性,则会被源对象的属性覆盖。该方法返回目标对象。

示例:

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

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

console.log(target); // 输出 { a: 1, b: 4, c: 5 }
console.log(result); // 输出 { a: 1, b: 4, c: 5 }

注意:Object.assign 进行的是浅拷贝,即对于源对象中的引用类型属性,只是复制了引用,并没有创建新的对象。