#继承
这是目前我们经常使用的一种继承方式,这样的方式就是我们所说的:寄生组合式继承,它是引用类型最理想的继承范式。

$.inherit = function(subClass, superClass) {
    var temp = function() {};
    temp.prototype = superClass.prototype;
    var subPro = new temp();
    subPro.constructor = subClass;
    subPro.superClass_ = superClass.prototype;
    subClass.prototype = subPro;
};

javascript主要通过原型链实现继承。
原型链的构建是通过一个类型的实例赋值给另一个构造函数的原型实现的。结果是:子类就能够访问父类的所有属性和方法。
当父类的实例属性为引用类型值,子类所有的实例会共享该属性.
这样会影响到所有实例对象。借用构造函数就是为了解决这一问题:函数只不过是在特定环境中执行代码的对象,可通过call()与apply()可以在新创建的的对象(将来)执行构造函数;即在子类构造函数的内部调用父类的构造函数;这样每个实例都会有自己的属性,并保证只使用构造函数模式来定义类,但该模式存在无法复用,将借用构造与原型链组合,为组合继承,通过借用构造函数继承实例属性,使用原型链继承共享的属性和方法,所以该继承,在对子类的实例化,都会对父类有两次实际的调用。在该寄生组合式继承,其实就是完善组合继承。实际上,我们的原型链继承只需要父类原型的一个副本,然后弥补因重写原型而失去的默认constructor属性。这样不必为了指定子类型的原型而调用父类的构造函数。

子类继承父类的原型方法,如果子类与父类方法名一样,会导致父类原型方法被重写;那么如何扩展父类原型方法,即可call()与apply()将需要拓展的父类方法指定到子类执行,然后添加需要在方法上拓展的,可通过


subPro.superClass_.**.call(this)(父类原型上的方法)