ExtJS底层继承实现的比较完美,既实现了继承父类的模板,又继承了父类的原型对象,又用call,apply实现了子类实例化传参,还只继承了一遍父类的原型对象。其中的原理呢,看下面代码有详细的解释。
// 原型继承的方式:既继承了父类的模板,又继承了父类的原型对象 如 Boy.prototype = new Persion();
//混合继承:原型继承和类继承
// 父类
function Persion(name,age){
this.name = name;
this.age = age;
}
Persion.prototype = {
constructor:Persion, //此处可以不这样写 也可以通过Object.defineProperty()
sayHello:function () {
alert('Hello world');
}
}
// 子类
function Boy(name,age,sex){
//call apply 实现继承 只复制了父类的模板
//为了更好的解耦 此处Persion = Boy.superClass.constructor
Boy.superClass.constructor.call(this,name,age);
this.sex = sex;
}
extend(Boy