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 进行的是浅拷贝,即对于源对象中的引用类型属性,只是复制了引用,并没有创建新的对象。