当前位置: 首页 > 面试题库 >

如何用js写一个继承?

康锦
2023-03-14
本文向大家介绍如何用js写一个继承?相关面试题,主要包含被问及如何用js写一个继承?时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

原型链继承

核心: 将父类的实例作为子类的原型

特点:

非常纯粹的继承关系,实例是子类的实例,也是父类的实例

父类新增原型方法/原型属性,子类都能访问到

简单,易于实现

缺点:

要想为子类新增属性和方法,不能放到构造器中

无法实现多继承

来自原型对象的所有属性被所有实例共享

创建子类实例时,无法向父类构造函数传参

 

构造继承

核心:使用父类的构造函数来增强子类实例,等于是复制父类的实例属性给子类(没用到原型)

特点:

解决了子类实例共享父类引用属性的问题

创建子类实例时,可以向父类传递参数

可以实现多继承(call多个父类对象)

缺点:

实例并不是父类的实例,只是子类的实例

只能继承父类的实例属性和方法,不能继承原型属性/方法

无法实现函数复用,每个子类都有父类实例函数的副本,影响性能

 

实例继承

核心:为父类实例添加新特性,作为子类实例返回

特点:

不限制调用方式,不管是new 子类()还是子类(),返回的对象具有相同的效果

缺点:

实例是父类的实例,不是子类的实例

不支持多继承

 

拷贝继承

特点:

支持多继承

缺点:

效率较低,内存占用高(因为要拷贝父类的属性)

 

组合继承

核心:通过调用父类构造,继承父类的属性并保留传参的优点,然后通过将父类实例作为子类原型,实现函数复用

特点:

可以继承实例属性/方法,也可以继承原型属性/方法

既是子类的实例,也是父类的实例

不存在引用属性共享问题

可传参

函数可复用

 

寄生组合继承

核心:通过调用父类构造,继承父类的属性并保留传参的优点,然后通过将父类实例作为子类原型,实现函数复用

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

 类似资料:
  • 我想在调用方法中写的是这样的: 那么,我的接口应该是什么样子,以及如何将方法抽象为默认实现但可重写?

  • 本文向大家介绍用 js 写一个 js 解释器过程详解,包括了用 js 写一个 js 解释器过程详解的使用技巧和注意事项,需要的朋友参考一下 用 js 来 编译 js 看起来是个高大上的东西,实际原理其实很简单,无非就是利用 js 对象属性可以用字符串表示 这个特性来实现的黑魔法罢了。 之所以看起来那么 深奥, 大概是由于网上现有的教程,都是动不动就先来个 babylon / @babel/pars

  • 构思插件的功能 import BScroll from '@better-scroll/core' import MyPlugin from '@better-scroll/my-plugin' BScroll.use(MyPlugin) const bs = new BScroll('.wrapper', { myPlugin: { scrollText:

  • 本文向大家介绍举例说明js如何实现继承?相关面试题,主要包含被问及举例说明js如何实现继承?时的应答技巧和注意事项,需要的朋友参考一下 JavaScript 基于原型链实现的继承,简单来说就是通过对象的实现的向上查找。 比如你从未定义过方法,但是你却可以在任何地方使用它,原因就是当你使用时,他会先在自身查找看看没有这个方法,如果没有就根据寻找他的原型对象,看看他的原型对象上有没有....知道找到为

  • 本文向大家介绍js前端如何写一个精确的倒计时代码,包括了js前端如何写一个精确的倒计时代码的使用技巧和注意事项,需要的朋友参考一下 关于写倒计时大家可能都都比较熟悉,使用 setTimeout 或 setInterval 就可以搞定。几秒钟或者几分钟的倒计时这样写没有问题,但是如果是长时间的倒计时,这样写就会不准确。如果用户修改了他的设备时间,这样的倒计时就没有意义了。今天就说说写一个精确的倒计时

  • 本文向大家介绍如何用Java编写一个空函数,包括了如何用Java编写一个空函数的使用技巧和注意事项,需要的朋友参考一下 让我们看看如何在Java中编写一个空函数- 示例 输出结果 空函数基本上是在不定义函数的情况下创建函数的。名为Demo的类包含一个名为'my_empty_fun'的空函数,该函数只需放置两个花括号即可完成,而无需添加任何功能。在main函数中,编写了一条print语句,然后调用e