function Father() {
}
Father.prototype.run =function (name) {
console.log('father run ')
}
function Son() {
}
Son.prototype.lol =function (name) {
console.log('son lol ')
}
function jicheng(subClass,superClass){
//这里要把之前的子类的函数保持起来,然后再塞进去
let tempSubPro = Object.assign({},subClass.prototype);
var f = function () { };
f.prototype = superClass.prototype;
f.prototype.constructor = superClass;
subClass.prototype = new f();
Object.assign(subClass.prototype,tempSubPro)
subClass.prototype.constructor = subClass;
//添加超类关联
subClass.prototype.super = subClass;
}
jicheng(Son,Father);
var son = new Son();
son.run();
son.lol();
总结:之前看别人写的集成函数,没有把子类的prototype的原有方法如lol()集成过来,我仔细想了想,就加先缓存起来,后再新的子类prototype中再塞进去,然后就实现了;
集成的方式很多,要理解用法,才能举一反三,核心是利用js的prototype的向上查找的原理实现继承;