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

一篇文章了解JavaScript的继承?

时间:2023-03-07 11:32:58 网络应用技术

  我已经学习了一段时间了,但是经过多次继承了这件作品,我也没有记得这个。阅读这段时间后,我只写笔记并加深记忆。每个人都可以参考它。注意。还有什么?

  ?emmm ...六?五?还是四种类型...

  这次我记得总共有五种继承方法

  基本想法很简单:父类构造函数在子类构造函数中调用。所有函数是在特定上下文中执行代码的一个简单对象,因此您可以使用apply()和call()方法执行执行以新创建的对象为上下文的构造函数。

  窃取构造函数的优点之一是它可以传递给子构造函数中的父级构造函数

  组合继承(有时也称为伪古典的继承)整合了原始链和被盗的构造函数,并集中了两者的优势。基本思想是使用原始链原型的属性和方法,并继承了遗传实例属性通过窃取构造函数。这样,可以在原型上重复使用法律含义,并且每个实例都可以具有自己的属性。

  原型继承适用于这种情况:您有一个要基于它创建新对象的对象。您需要首先将此对象传递给对象(),然后适当地修改返回的对象。

  object.create()方法标准化原型的概念继承了此方法以接收两个参数:作为新对象原型的对象,以及定义新对象的其他属性的对象(第二可选)

  //?object.create()第二个参数与对象的第二个参数相同。

  寄生继承背后的想法类似于寄生构造器和工厂模式:创建实现继承,以某种方式增强对象的函数,然后返回到该对象。

  在执行上面的代码之后,subtype.protype:name and Colors。它们都是SuperType的实例属性,但是现在它们已成为子类型的原型属性。当调用子类型构造函数,Supertype构造函数,Supertype constructor,也称为,这次它将在新对象上创建实例属性名称和颜色。这些实例属性将涵盖原型上同名的属性。

  如图所示,有两组名称和颜色属性:一个在实例上,另一组在Subtype的原型上。这是调用Sepertype构造器两次的结果。幸运的是,有一种方法可以解决这个问题。

  寄生组合继承了构造函数的继承,但使用了混合原始链继承方法。基本思想是,父构建体不是分配给子型类型的,而是parent -class prototype的副本。寄生的继承是继承父类原型,然后将新对象分配给子类原型。寄生组合的基本模式继承如下:

  此sentaritPrototype()函数实现了寄生组合的核心逻辑。该功能接收两个参数:子类构造函数和parent -class structortor.inside this this函数,第一步是创建parent -class prototype的副本。返回原型对象的构造函数属性解决了由于重写原型而导致的默认构造函数丢失的问题。将新创建的对象分配给sub -type的原型。如下示例所示,call call sashititprototype()can can在上一个示例sub -type中实现子类型原型分配:

  只有一次称为Supertype构造函数一次,以避免在subtype.protype上避免不必要或未使用的属性,因此可以说,此示例更有效。此外,原始链条保持不变,因此Operator和ISProtototypeof()方法是正常和有效。寄生虫的遗传可以视为最佳参考类型遗传模式。

  原始:https://juejin.cn/post/7095290456057053191