JavaScript继承实现

来源:互联网 发布:心理教学软件 编辑:程序博客网 时间:2024/06/06 09:02

JavaScript高级程序设计第六章

1,通过原型链实现

基本思想:通过原型链让一个引用类型继承另一个引用类型的属性和方法
实现思路:将父类的实例赋给子类的原型
关键代码:SubType.prototype=new SuperType();
问题:父类实例属性变为子类的原型属性

2,借用构造函数

基本思想:在子类构造器中调用父类的构造器
关键代码:

  function SubType(args){       SuperType.call(this, arg);       //其他属性和方法   }

问题:无法继承父类的原型方法和属性;子类方法无法复用

3,组合继承

基本思想:结合以上两种方式:通过原型链实现对原型属性和方法的继承,通过构造器实现对实例属性和方法的继承。
问题:父类的属性和方法即存在于子类的原型中,又存在于子类的实例中。

4,原型式继承

基本思想:借用已有的对象创建新的对象
代码:

function object(o){    function F();    F.prototype=o;    return new F();}

5,寄生式继承

基本思想:增强原型式继承
代码:

function createAnother(o){    var clone = object(o);    clone.doSomething(){}//增强    return clone;}

6,寄生式组合继承

基本思路:将构造器继承和寄生式继承组合
完整代码:

function object(o){    function F();    F.prototype=o;    return new F();}function inheritPrototype(superType,subType){    var clone = object(superType.prototype);    subType.construct = subType;    subTypr.prototype = clone;}//属性方法和参数略去function SuperType(){}function SubType(){    SuperType.call(this)  //利用构造器}inheritPrototype(SuperType,SubType)