分为两个方向去解决
组合继承的方法 Super构造函数会被调用两次--这是缺点
function Father(){
this.value = [1,2,3,4,5];
}
Father.prototype.getValue = function(){
return this.value;
}
function Son(){
//
Father.call(this);
}
Son.prototype = new Father();
var son1 = new Son();
//尝试通过子类更改父类属性
son1.value.push(5); //引用值类型是无法改变父类的属性好方法了
console.log(son1.value);
console.log(son1.getValue());//子类可以找到父类的属性和方法,但是并不能更改父类的属性和方法
最好的继承方法 --寄生组合的继承方式(即圣杯模式)
如下:
function inherit(Target,Origin){
function F(){};
Origin.prototype = F.prototype;
Target.prototype = new F();
Target.prototype.constructor = Target;
Target.prototype.uber = Origin.prototype;
}圣杯继承

京公网安备 11010502036488号