第八篇 手写原理代码 - 对象 【 实现 Object.assign() 和 Object.create() 】

1、Object.assign(target, ...sources)

  Object.assign() 方法用于将一个或多个源对象的属性复制到目标对象中。它只复制源对象自身可枚举的属性,同时也能够拷贝 getter 和 setter 函数
  
2、Object.create(proto[, propertiesObject])

  Object.create() 方法创建一个新对象,使用现有的对象来提供新创建的对象的原型
  
  Object.create() 创建的新对象具有指定的原型对象,但其自身并不包含任何属性。如果需要向新对象添加属性,可以使用 Object.defineProperty() 或 Object.defineProperties() 方法。

1、实现 Object.assign()

Object.prototype.my_assign = (target, ...args) => {
  if (target === null || target === undefined) return;
  target = Object(target);
  args.forEach((item) => {
    for (let key in item) {
      if (item.hasOwnProperty(key)) {
        target[key] = item[key];
      }
    }
  });
  return target;
};
使用
const my_assign_obj = Object.my_assign(null, { a: 1, c: 1 }, { a: 8, b: 2 });

console.log("my_assign_obj", my_assign_obj);

2、实现 Object.create()

Object.prototype.my_create = (photo) => {
  function F() {}
  F.prototype = photo;
  return new F();
};
posted @ 2023-04-11 23:11  caix-1987  阅读(75)  评论(0)    收藏  举报