美文网首页
关于JS的继承(易理解版)

关于JS的继承(易理解版)

作者: 钱罗罗_ | 来源:发表于2017-12-12 11:25 被阅读114次

1.原型链

原型链示意图

2.原型链继承

    我的理解就是,属性方法写在构造函数(父类)的原型上,通过new一个实例,使实例继承了父类原型上的方法和属性。

原型链继承demo

    缺点:

            1.原型对象的属性,所有实例共享。

            2.不能实现多继承(哦,我不知道是啥)

            3.创建子类的时候,不能向父类传参数。为啥呀,因为所有属性和方法都是实现写死了。。。收不到参数的

            4.为子类新增属性和方法,不能在构造器里直接写

3.构造函数继承

        就是用父类的构造函数,将父类的属性以及方法集成到子类里面,简单的说就是...父类就是一个构造函数,call一下,就把自己的东西都给子类了。。。。

构造函数继承demo

    Animal.call(this)。就是将animal类的构造函数执行一遍,修改了this的指向,this指向Cat类,该语句执行完,Cat类就多了name属性和sleep方法。然后Cat类把继承来的name属性进行重写。

    缺点: 1.实例是子类的实例

                2.不能继承父类原型上的属性和方法

                3.无法实现函数复用

4.实例继承

这个我理解了,就是new一个父类的实例,然后往这个实例里加属性和方法,然后返回。这个很机智。

实例继承demo

        缺点:1.实例是父类的实例

                    2.不支持多继承

5.拷贝继承

    遍历父类的属性和方法,依次赋值到子类中。

拷贝继承demo

    缺点:1.效率低,占内存

               2.父类可能有for...in...访问不到的属性

6.组合继承

        组合继承就是,将父类的实例赋值给子类的原型。构造函数继承+原型继承

组合继承demo

    缺点:调用了两次父类,生成了两次父类实例。

7.寄生组合继承

    奥哟,这个贼麻烦,用寄生继承修复了组合继承的小bug,实例化临时副本,实现原型继承。

寄生组合继承demo

缺点就是实现太复杂,不过性能堪称完美。

相关文章

  • 关于JS的继承(易理解版)

    1.原型链 2.原型链继承 我的理解就是,属性方法写在构造函数(父类)的原型上,通过new一个实例,使实例继承...

  • 搞懂 JavaScript 继承原理

    摘要: 理解JS继承。 原文:搞懂 JavaScript 继承原理 作者:前端小智 Fundebug经授权转载,版...

  • ES5的继承和ES6的继承

    关于js中的继承,已经老生常谈了,本文将对js的继承做一个大概的总结. 首先我们可以看一下,es5继承关系图,理解...

  • JS继承理解

    1、原型链继承: 共享父类(实例)属性方法 原型链继承:优点:能够共享父类属性和方法,避免每个实例重新定义方法属性...

  • 关于js继承

    链接来源于https://www.cnblogs.com/Grace-zyy/p/8206002.html htt...

  • js关于继承

    Javascript是一门基于原型链的语言构造函数,原型属性与实例对象三者的关系: Person 是一个构造函数(...

  • 关于JS‘继承’

    ‘继承’是面向对象里面的概念,看下维基百科如何介绍继承: 如果一个类别B“继承自”另一个类别A,就把这个B称为“A...

  • 关于继承理解

    1.什么是继承? 关键字:extends class zilei extends fulei{} //子类是zie...

  • js继承完全理解

    认识原型链 要理解js的继承原来要先理解原型链,要理解原型链要先清楚下面两个结论: 任何一个构造函数(其实是任何一...

  • js继承再度理解

    https://www.cnblogs.com/xiaohuochai/p/5721552.html 函数有原型,...

网友评论

      本文标题:关于JS的继承(易理解版)

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