首页 > 其他分享 >JS寄生组合式继承的实现

JS寄生组合式继承的实现

时间:2022-12-26 06:55:05浏览次数:48  
标签:组合式 function name age JS 寄生 原型 SuperType prototype

 

/**
 * 对传入的对象进行一次浅复制
 * (将被传入的对象复制给这个构造函数的原型)
 */
function object(o) {
  function F() {}
  F.prototype = o;
  return new F();
}

/**
 * 继承父类圆形,然后返回新对象赋值给子类原型(寄生组合)
 */
function inheritPrototype(subType, superType) {
  // 创建父类原型的副本
  const prototype = object(superType.prototype);
  // 将副本的原型的构造器指向子类
  prototype.constructor = subType;
  // 将子类的原型指向父类的副本
  subType.prototype = prototype;
}

/* 寄生组合式继承 */

function SuperType(name) {
  this.name = name;
  this.colors = ['red', 'blue', 'green'];
}

SuperType.prototype.sayName = function() {
  console.log(this.name);
};

function SubType(name, age) {
  SuperType.call(this, name);
  this.age = age;
}

inheritPrototype(SubType, SuperType);
SubType.prototype.sayAge = function() {
  console.log(this.age);
};

 

标签:组合式,function,name,age,JS,寄生,原型,SuperType,prototype
From: https://www.cnblogs.com/fanqshun/p/16891328.html

相关文章