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

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

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

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

优点:原型链很强大;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

缺点:暂无。

相关文章

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

    1、原型链:让需要子类型原型对象等于超类型的实例。 优点:原型链很强大; 缺点:最主要的问题是如果有包含引用值类型...

  • JS中基于原型实现继承

    本文不会对于JS中的继承机制进行深入研究,只聊js中基于原型实现继承的方式,如果需要了解JS中的继承机制及其相关背...

  • JS之创建对象的方式及其优劣

    一、工厂模式 用函数来封装以特定接口创建对象的细节。 function createPerson(name,age...

  • JS继承的实现的几种方式

    前言 JS作为面向对象的弱类型语言,继承也是非常强大的特性之一,那么如何在JS实现继承呢? JS继承的实现方式 既...

  • java 多线程,线程池,线程通信,线程安全,并发

    线程 重点问题:线程的创建方式,各类创建方式的优劣 分为两大类:继承Thread,实现Runnable(实现Cal...

  • js中的继承-原型与原型链

    面向对象的语言支持两种继承方式,接口继承和实现继承js无法实现接口继承,只支持实现继承,主要通过原型链来实现。具体...

  • JS继承

    JS中的继承 许多OO语言都支持两种继承方式:接口继承和实现继承; 因为JS中没有类和接口的概念 , 所以JS不支...

  • js基础之实现继承的几种方式

    js 实现继承的方式有: 原型链继承; 构造函数继承; 组合继承(原型链继承 + 构造函数继承)(最常用);(原型...

  • JS实现继承方式

    js中的继承: Object是所有对象的父级/父类型/超类型,js中所有的对象都直接或间接的继承自Object. ...

  • JavaScript 10

    js继承的概念 1.通过原型链方式实现继承(对象间的继承) 2.类式继承(构造函数间的继承) 由于js不像Java...

网友评论

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

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