了解 JavaScript 中的原型链
当你开始学习编程时,你会遇到面向对象编程这个术语。在这里,我们发现了它的含义,并且您承认它是用于将数据分组为具有属性的“对象”。
在许多编程语言中创建这些对象的关键字是类。您使用构造函数和许多其他公共和个人函数定义一个类别。如果您希望一个类从另一个类继承,您可以编写简单的继承语法。您已经创建了一个继承序列。在 ES2015 之前,该语言没有实现类别。相反,他们使用了原型链。新的 ES6“类”隐藏了原型链的内部工作。如果您想在使用 JavaScript 的 OOP 范例开发高性能代码时,了解原型链的工作原理至关重要。对于那些熟悉(或不太熟悉)计算的人来说,原型链可能是一个链表。这是一个严重的过度简化。
我们如何初始化我们的链?
JavaScript 中的所有对象都有一个原型。一个对象的原型也被认为是一个对象。
function Dog(name) {
this.name = name;
}
因为原型是一个对象,所以原型有自己的原型。在这种情况下,Dog.prototype 的原型是Object.prototype
// Returns true
Object.prototype.isPrototypeOf(Dog.prototype);
输出:
true
回想一下hasOwnProperty()方法。
javascript
let duck = new Dog("Donald");
duck.hasOwnProperty("name"); // yields true
输出:
true
hasOwnProperty()方法在Object.prototype中定义,可以通过Dog.prototype访问,然后可以通过变量“duck”访问。它清楚地解释了原型链。在这个原型链中,“Dog”是“duck”的超类型,而“duck”是子类型。该对象是“Dog”和“duck”的超类型。我们认为 Object 是 JavaScript 中所有对象的超类型。任何对象都可以使用hasOwnProperty() JavaScript 方法。