美文网首页
JS 中继承实现的几种方式

JS 中继承实现的几种方式

作者: 未路过 | 来源:发表于2022-09-11 14:15 被阅读0次

JavaScript想实现继承的目的:重复利用另外一个对象的属性和方法

1.原型链继承

将父类(Person)的实例(p对象)作为子类(Student)的原型prototype。
优点
1.父类本身的方法/属性和prototype里面的属性和方法,子类都能够访问。
2.原型链继承简单易于实现。
缺点
1.父类的属性(父类本身或者prototype里面的)被所有子类实例共享。所有子类的实例都使用同一个属性。
2.因为无法向父类构造函数传参数,子类的实例没有办法使用父类的实例属性。(有,但是是公用的)


image.png

2.组合借用构造函数继承

在子类构造函数内部使用call方法,向构造继承可以向父类传递参数,即复制父类本身的属性和方法给子类。
缺点:1.借用构造函数继承最大的问题就是无论在什么情况下,都会调用两次父类构造函数。
第一次是在创建父类的实例,也就是子类的prototype的时候,第二次是在子类构造函数内部,也就是每次创建子类实例的时候。
2.所有的子类实例会拥有两份父类的属性。
一份在当前的实例自己里面(也就是stu1本身的),另一份在子类对应的原型对象中(也就是stu1.proto里面),里面都有age,friends,name属性; 当然,这两份属性我们无需担心访问出现问题,因为默认一定是访问实例本身这一部分的;

image.png

3 寄生组合式继承

使用了call函数和原型链。
不再使用父类的实例作为子类的prototype。而是创建出一个空对象,作为子类的prototype,但是这个空对象的proto是指向父类的prototype。
放弃使用父类的实例作为子类的prototype是因为我们在子类中使用了call这个函数,就意味着我们将父类中的属性和方法复制到了一份在子类实例中。所以父类本身里面的内容,我们不再使用。我们就只考虑怎么使用父类prototype中的方法就可以了。

image.png

相关文章

  • js中的实现继承的几种方式

    大纲:原型链借用构造函数组合继承原型式继承寄生式继承寄生组合式继承 1、原型链: 什么是原型链? 原型链的基本思想...

  • JS实现继承的几种方式

    https://www.cnblogs.com/humin/p/4556820.html

  • js实现继承的几种方式

    JS继承的实现方式:既然要实现继承,那么首先我们得有一个父类,代码如下: 1、原型链继承核心: 将父类的实例作为子...

  • JS实现继承的几种方式

    转自 https://www.cnblogs.com/humin/p/4556820.html 前言 JS作为面向...

  • js实现继承的几种方式

    如何实现继承? js中实现继承的方式主要是通过原型链完成的。了解原型链的相关信息可以点这里 javascript中...

  • js实现继承的几种方式

    js实现继承有几种方式,这里我们主要探讨 原型链继承 构造继承 组合继承(原型链和构造继承组合到一块,使用原型链实...

  • JS实现继承的几种方式

      继承是OO语言一个最为津津乐道的概念,JS继承主要依靠的是原型链的原理来实现的。关于原型链的内容,有不明白的可...

  • JavaScript 继承

    继承是JS中非常内容,原因就是JS没有地道的继承方式,我们只能通过各种方式来模拟面向对象中的继承。下面介绍几种常见...

  • JS继承

    JS继承的几种实现方式 继承是指子类继承父类的属性和方法,要实现继承,首先我们需要有一个父类 原型链继承 原型链继...

  • 彻底弄清js继承的几种实现方式

    js有几种经典的继承方式。比如原型链继承、构造函数继承、组合继承、寄生组合继承、ES6继承。让我们一一分析并实现。...

网友评论

      本文标题:JS 中继承实现的几种方式

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