组合寄生继承是现有的JS继承方法中最好的继承方式
代码如下:
function inherit(Target, Origin) { //传入两个构造函数 第二个是被继承的构造函数
function F() {}; //创建一个空的构造函数;
F.prototype = Origin.prototype; //使这个中间构造函数的原型指向 父级构造函数的原型
Target.prototype = new F(); //将子级构造函数的原型指向这个中间构造函数
Target.prototype.constuctor = Target; //因为这样操作会使得子级构造函数的构造器(constuctor)
//会去继承到Origin构造函数的构造器()但一般 我们的构造器是指向自己的 所以要写这一步
//到这里基本的继承就完成了 不过还有一个问题是我们希望可以查看到子级构造函数可以得知自己的超类是谁
//(就是子类最终继承与谁)就可以把这一步也写上
Target.prototype.uber = Origin.prototype;
}
自我理解
有点类似与数组的冒泡排序中的位置互换时的那个引用中间变量
尝试
Father.prototype.name = "ababab";
function Father() {
}
function Son() {
}
//调用继承方法
inherit(Son,Father);
var son = new Son();
var Father = new Father();
console.log(son.name); //ababab