继承是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汇编的,它也是寄生的结合继承,因此我们需要专注于其继承原则。