当前位置: 首页 > 网络应用技术

分析JavaScript的6种继承方法以及优势和缺点

时间:2023-03-09 10:19:42 网络应用技术

  继承是JS世界中必不可少的联系。三个被称为JS的山之一。这样,我们可以更好地复制先前的开发法规,缩短开发周期,提高发展效率的发展效率

  在ES6之前,通过构造函数来模拟JavaScript中的类,并且没有真正的类。尽管ES6类别的情节是语法糖?之后,该类不再可以用作函数

  在开始谈论继承之前,需要清楚的第一件事是类中有两个属性:实例上的属性和公共属性,下一步提到的所有继承方法是围绕这两个点开始

  如何直接避免作为ES6构造函数的函数呼叫?

  ES5时期解决方案:

  ES6之后的解决方案:

  以上两个解决方案可以直接作为函数调用求解。如果您直接调用控制台,您将报告一个错误:

  让我们看一下JS中的继承方法

  主要链的继承是最常见的继承方法之一。结构函数,原型和实例中所涉及的实例,这三个之间存在一定的关系,也就是说,每个构造函数都有一个原型对象,并且原型对象包含一个指向结构,用于函数的结构指针的结构,该实例包含原型对象的指针。

  目前,代码与期望一致,然后创建一个实例并修改名称和权限

  前两个单独的输出是:李si和Zhang san,两个输出的结果是相同的。他们都。为什么会发生这种情况?

  实际上,执行时,这是分配操作。作业后,ZS变为

  ZS2.NAME继续搜索原始链,因此前面的两个输出是Li Si和Zhang San

  通过输出为真,两个实例使用相同的原型对象。他们的内存空间共享。当一个变化时,另一个变化了

  通过上述创始链继承有一些缺点

  构造功能通常使用呼叫并申请完成继承

  上述代码控制台的输出:

  可以看出,不仅具有员工的属性和方法,而且还继承了人格的属性,因为每次实例化,它都可以解决原始链继承的问题

  此时,请致电人类原型的方法

  此时,控制台将报告一个错误:

  最初的链继承和构造函数都有自己的问题和优势。两种继承方法的组合产生了组合继承

  临时控制台的输出是正常的,并且也解决了上述两个继承的缺点,但目前添加了两个新问题:

  通过使用对象。创建以获取目标对象的浅副本,然后添加一些避免污染基础的方法,主要是为了解决组合继承的第二个问题

  主要替换两行代码如下

  替换为:

  到目前为止,存在两个尚未解决的问题的问题。下一个组合寄生的遗传可以完美地解决上述问题。这也是ES6之前ES6之前所有继承方法的最佳继承方法

  完整的代码如下:

  实际上,当继承更改员工时,prototype要指向以上方法更多的指向,还有其他一些方法

  存在一个兼容性的问题,您自己找不到它,继续通过原始链条找到。目前,动物和老虎将不再共享相同的地址,也不会互相影响。

  ES6语法,兼容性,原理是原理

  ES6之后,您可以使用扩展作为继承。这也是开发中最常用的方式。尽管浏览器的支持并不令人满意,但今天的工程变得如此完整,这些不再是限制使用使用的理由

  实际上,ES6的继承是由Babel汇编的,它也是寄生的结合继承,因此我们需要专注于其继承原则。