前端手撕代码——寄生式继承

// 寄生式继承的思路与寄生构造函数和工厂模式类似 创建一个仅用于封装过程的函数,在该函数内部以某种方式来增强对象,但是它不能做到函数复用
// 缺点:1.每个实例对引用类型属性的修改都会被其他实例对象共享
//      2. 在创建child实例的时候没办法向parent传参,child没办法定义自己的属性

function createObj(obj) {
  let newObj = Object.create(obj);
  newObj.sayName = function(data){
    console.log('123', data);
  } 
  return newObj;
}

let person = {
  name: 'name01',
  colors : ['123', '456'],
}

let person1 = createObj(person);
let person2 = createObj(person);

person1.body.push('789');

console.log(person1.name);
console.log(person2.name);


console.log(person1.colors);
console.log(person2.colors);

person1.sayName('123');
person2.sayName('456');

你可能感兴趣的:(前端手写代码,前端,javascript,开发语言)