优点:去除原版中间层 F 构造函数,简洁代码。
原理:将 Target.prototype 直接指向 Origin 的一个匿名实例对象,当对 Target.prototype 作个性化设置时,只会影响该匿名实例对象,而不会波及 Origin.prototype。
缺点:个性化属性和方法只能通过在Target.prototype上添加,不能改变其引用。
欢迎各位开发者讨论 / 使用,希望能够帮助到大家。
源码如下:
function inherit(Target, Origin) {
Target.prototype = new Origin();
// 或者:Target.prototype = Object.create(Origin.prototype);
Target.prototype.constructor = Target; // 解决 constructor 指向不准问题
Target.prototype.uber = origin.prototype; // 方便实例寻找自己的超类
}
inherit(Son, Father)
let father = new Father();
let son = new Son();
一般使用:本例中
1、将Father.prototype作为共享原型,把固定的共用代码写到里面。
2、将个性化公用代码写到Son.prototype上,注意:不得改变其引用。