龙空技术网

Web前端学习入门:JS继承方式详解

艾特程序员 676

前言:

而今同学们对“js类继承方法”可能比较关切,大家都需要知道一些“js类继承方法”的相关知识。那么小编同时在网络上收集了一些有关“js类继承方法””的相关资讯,希望咱们能喜欢,姐妹们快快来了解一下吧!

在千锋广州Web前端的学习中,JS是每一个Web前端工程师都需要掌握的技术,它涵盖的知识点很多。众所周知,JS是一门基于原型链的语言,而“继承”就和“原型链”这一概念息息相关。下面,千锋广州Web前端培训的老师就来给大家介绍一下JS常见的6种继承方式。

1、原型链继承。

即利用原型让一个引用类型继承另外一个引用类型的属性和方法。原型链继承的缺点是父类新增原型方法/原型属性子类都能访问到,父类一变其它的都变了。

参考代码:

2、借用构造函数继承。

主要是借用构造函数的基本思想就是利用call或者apply把父类中通过this指定的属性和方法复制(借用)到子类创建的实例中。缺点:1)只能继承父类的实例属性和方法,不能继承原型属性/方法;2)无法实现构造函数的复用,每个子类都有父类实例函数的副本,影响性能,代码会臃肿。

参考代码:

3、组合继承。

是将原型链继承和构造函数继承这两种模式的优点组合在一起,通过调用父类构造,继承父类的属性并保留传参,然后通过将父类实例作为子类原型,实现函数复用。缺点是:父类中的实例属性和方法既存在于子类的实例中,又存在于子类的原型中,不过仅是内存占用,因此,在使用子类创建实例对象时,其原型中会存在两份相同的属性/方法。

参考代码:

4、原型式继承

通过父类原型和子类原型指向同一对象,子类可以继承到父类的公有方法当做自己的公有方法,而且不会初始化两次实例方法/属性。缺点是:1)原型链继承多个实例的引用类型属性指向相同,存在篡改的可能;2)无法传递参数,无法实现复用。

参考代码:

5、寄生式继承

借助原型可以基于已有的对象来创建对象,var B =

Object.create(A)以A对象为原型,生成了B对象。B继承了A的所有属性和方法。这是目前来说,最完美的继承方法!

参考代码:

6、ES6中class的继承

ES6中引入了class关键字,class可以通过extends关键字实现继承,还可以通过static关键字定义类的静态方法,这比ES5的通过修改原型链实现继承,要清晰和方便很多。需要注意的是,class关键字只是原型的语法糖,JS继承仍然是基于原型实现的。缺点:并不是所有的浏览器都支持class关键字!

标签: #js类继承方法