美文网首页
JS之继承的实现方式及其优劣

JS之继承的实现方式及其优劣

作者: 晴天的晴q | 来源:发表于2018-12-22 09:33 被阅读0次

    1、原型链:让需要子类型原型对象等于超类型的实例。

    优点:原型链很强大;

    缺点:最主要的问题是如果有包含引用值类型的原型,则其属性会被所有实例共享;其次,在创建子类型的实例时,不能向超类型的构造函数中传参数。

    2、借用构造函数:在子类型构造函数的内部调用超类型构造函数。

    优点:可以在子类型构造函数中向超类型构造函数传递参数;

    缺点:方法都在构造函数中定义,函数复用无从谈起;而且在超类型的原型中定义的方法,对子类型而言也是不可见的,结果所有类型都只能使用构造函数模式。

    3、组合继承(伪经典继承):将原型链和借用构造函数的技术组合到一块。

    优点:避免了原型链和借用构造函数的缺陷,并且融合了它们的优点;

    缺点:需要调用两次超类型的构造函数。

    4、原型式继承:先创建一个临时性的构造函数,然后传入的对象作为这个构造函数的原型,最后返回一个临时类型的新实例。

    优点:在没有必要兴师动众地创建构造函数,而只想让一个对象与另一个对象保持类似的情况,原型式继承完全可以胜任;

    缺点:包含引用类型值的属性始终都会共享相应的值。

    5、寄生式继承:与原型式继承紧密相关,实现与工厂模式类似,即创建一个仅用于封装继承过程的函数,该函数在内部以某种方式来增强对象,最后再像真地是它做了所有工作一样返回对象。

    优点:在主要考虑对象而不是自定义类型和构造函数的情况下,有用;

    缺点:不能做到函数复用。

    6、寄生组合式继承:通过借用构造函数来继承属性,通过原型链的混成形式来继承方法。

    优点:只调用了一次超类型的构造函数,同时原型链还能保持不变,能够正常使用instanceof和isPrototypeOf();

    缺点:暂无。

    相关文章

      网友评论

          本文标题:JS之继承的实现方式及其优劣

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