美文网首页
JS继承的六种方式

JS继承的六种方式

作者: lmmy123 | 来源:发表于2018-10-15 20:18 被阅读9次

一.构造继承

1.基本思想

通过使用apply,call方法可以在新创建的对象上执行构造函数,用父类的构造函数实现子类的实例

2.具体实现

function sub(){

    Super.call(this); // 调用父类

}

3.优缺点

——优点: 简单明了,直接继承构造函数的属性和方法

——缺点: 无法继承原型链上的属性和方法

二.原型链继承

1.基本思想

利用原型链来实现继承

2.具体实现

function Sub(){}

Sub.prototype = new Super()

Sub.prototype.constructor = Sub

3.优缺点

——优点: 简单明了,实例是子类的实例,也是父类的实例

——缺点: 所有子类的实例的原型都共享同一个超类实例的属性和方法

三.组合继承

1.基本思想

结合构造函数和原型链来实现继承

2.具体实现

function Sub(){

        Super.call(this)

}

Sub.prototype = new Super()

Sub.prototype.constructor = Sub


3.优缺点

——优点: 解决了构造函数和原型链继承的问题

——缺点: 事件上子类上会拥有超类的两份属性,只是子类的属性覆盖了超类的属性

四.原型式继承

1.基本思想

通过Object.create(obj)实现

2.具体实现

if( typeof Object.prototype.create != 'function'  ){

        Object.prototype.create = function(obj){

                function F(){}

                F.prototype = obj;

                return new F()

}}

3.优缺点

——优点: 直接通过对象生成一个继承该对象的对象

——缺点: 没有类的概念

五.寄生式继承

1.基本思想

创建一个仅仅用于封装继承过程的函数,然后在内部以某种方式增强对象,最后返回对象

2.具体实现

if( typeof Object.prototype.create != 'function'  ){        

                Object.prototype.create = function(obj){               

                        function F(){}                

                        F.prototype = obj;                

                        return new F()

}}

function createSubOobj(superInstance){

        var clone = Object.create(superInstance)

        return clone

}

3.优缺点

——优点: 原型式继承的一种拓展

——缺点: 还是没有类的概念

六.寄生组合式继承

1.基本思想

集合寄生式继承和组合式继承,完美实现不带两份超类属性的继承方式

2.具体实现

function inheritPrototype(Super,Sub){

        var superProtoClone = Object.create(Super.prototype)

        superProtoClone.constructor = Sub

        Sub.prototype = Super

}

function Sub(){

    Super.call(this)

}

inheritPrototype(Super,Sub)


3.优缺点

——优点: 完美实现不带两份超类属性的继承方式

——缺点: 太过繁琐


原文链接:https://blog.csdn.net/caijixin/article/details/78295676

相关文章

  • JS 继承

    JS的六种继承方式 1.借助call / apply 缺点:这种继承方式子类可以继承父类的属性值,但是子类是无法继...

  • js的原型继承

    js继承的六种方式 https://www.cnblogs.com/ranyonsue/p/11201730.ht...

  • JS继承的六种方式

    一.构造继承 1.基本思想 通过使用apply,call方法可以在新创建的对象上执行构造函数,用父类的构造函数实现...

  • JS继承的六种方式

    js实现继承的六种方式 继承,顾名思义就是子类通过一定的方式拥有父类的属性和方法,一个简单的栗子:有一个孩子,他拥...

  • JS继承的方法

    JS继承的方法有六种: 1、原型链继承 2、构造继承 3、实例继承 4、拷贝继承 5、组合继承 6、寄生组合继承

  • js实现继承的六种方式

    js实现继承的六种方式 继承,顾名思义就是子类通过一定的方式拥有父类的属性和方法,一个简单的栗子:有一个孩子,他拥...

  • 2019-07-25

    js实现继承的六种方式 继承,顾名思义就是子类通过一定的方式拥有父类的属性和方法,一个简单的栗子:有一个孩子,他拥...

  • JS六种继承继承方式优缺点

    js的继承有6种方式,大致总结一下它们各自的优缺点,以及它们之间的关系。 1.原型链 js的继承机制不同于传统的面...

  • 新手看JS的六种继承方式

      有了实体,为了简化定义,自然就有了继承的概念,比如已经定义了一个“人”类,后面需要详细分出“男人”和“女人”,...

  • js 的继承的几种方式

    js 继承有6种方式的代码。 js继承的6种方式[https://www.cnblogs.com/Grace-zy...

网友评论

      本文标题:JS继承的六种方式

      本文链接:https://www.haomeiwen.com/subject/zudqzftx.html