基于JavaScript实现继承机制之原型链(prototype chaining)的详解_javascript技巧
如果用原型方式重定义前面例子中的类,它们将变为下列形式:
function ClassA() {
}
ClassA.prototype.color = "blue";
ClassA.prototype.sayColor = function () {
alert(this.color);
};
function ClassB() {
}
ClassB.prototype = new ClassA();
原型方式的神奇之处在于最后一行代码。这里,把 ClassB 的 prototype 属性设置成 ClassA 的实例。这很有意思,因为想要 ClassA 的所有属性和方法,但又不想逐个将它们 添加到ClassB 的 prototype 属性。还有比把 ClassA 的实例赋予 prototype 属性更好的方法吗?
注意:调用 ClassA 的构造函数,没有给它传递参数。这在原型链中是标准做法。要确保构造函数没有任何参数。
与对象冒充相似,子类的所有属性和方法都必须出现在 prototype 属性被赋值后,因为在它之前赋值的所有方法都会被删除。为什么?因为 prototype 属性被替换成了新对象,添加了新方法的原始对象将被销毁。所以,为 ClassB 类添加 name 属性和 sayName() 方法的代码如下:
function ClassB() {
}
ClassB.prototype = new ClassA();
ClassB.prototype.name = "";
ClassB.prototype.sayName = function () {
alert(this.name);
};
可通过运行下面的例子测试这段代码:
var objA = new ClassA();
var objB = new ClassB();
objA.color = "blue";
objB.color = "red";
objB.name = "John";
objA.sayColor();
objB.sayColor();
objB.sayName();
此外,在原型链中,instanceof 运算符的运行方式也很独特。对 ClassB 的所有实例,instanceof 为 ClassA 和 ClassB 都返回 true。例如:
var objB = new ClassB();
alert(objB instanceof ClassA); //输出 "true"
alert(objB instanceof ClassB); //输出 "true"
在 ECMAScript 的弱类型世界中,这是极其有用的工具,不过使用对象冒充时不能使用该方法判断。但是由于子类的原型被直接重新赋值,所以出现以下这种情况:
console.log(objB.__proto__===objB.constructor.prototype) //false
因为ClassB的原型链 prototype 属性被另一个类的对象重写了。输出结果可以看出objB.__proto__仍然指向的是ClassB.prototype,而不是objB.constructor.prototype。这也很好理解,给Person.prototype赋值的是一个对象直接量new ClassA()实例,使用对象直接量方式定义的对象其构造器(constructor)指向的是根构造器Object,Object.prototype是一个空对象{},{}自然与ClassB.prototype不等。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Prototyp, ein Objekt in js, wird verwendet, um die Eigenschaften und Methoden anderer Objekte zu definieren. Dieses Attribut ist ein Zeiger, der auf ein Prototypobjekt zeigt Das Prototypattribut seines Konstruktors erbt Eigenschaften und Methoden. Prototypkette: Wenn js versucht, auf die Eigenschaften eines Objekts zuzugreifen, prüft es zunächst, ob das Objekt über diese Eigenschaft verfügt. Wenn nicht, wendet sich js an den Prototyp des Objekts. Wenn das Prototypobjekt diese Eigenschaft nicht hat Suchen Sie weiterhin nach dem Prototyp des Prototyps.

Bereichskette und Prototypenkette sind zwei wichtige Konzepte in JavaScript, die den beiden Kernfunktionen Bereich bzw. Vererbung entsprechen: 1. Bereichskette ist ein Mechanismus zur Verwaltung des Variablenzugriffs und -bereichs in JavaScript. Sie wird durch bestimmt Ausführungskontext und lexikalischer Bereich, in dem die Funktion erstellt wird. 2. Die Prototypkette ist ein Mechanismus zur Implementierung der Vererbung in JavaScript, der auf der Prototypbeziehung zwischen Objekten basiert, wenn auf die Eigenschaften oder Methoden eines Objekts zugegriffen wird Definition, wird entlang der Prototypenkette gesucht.

Der Unterschied zwischen Prototyp und Prototypkette ist: 1. Prototyp ist ein Attribut, das jedes Objekt hat, einschließlich einiger gemeinsamer Attribute und Methoden, das verwendet wird, um die gemeinsame Nutzung und Vererbung von Attributen und Methoden zwischen Objekten zu realisieren, während die Prototypkette ein ist Die Vererbung Der Mechanismus wird durch die Prototypbeziehung zwischen Objekten implementiert, die die Vererbungsbeziehung zwischen Objekten definiert, sodass Objekte die Eigenschaften und Methoden des Prototypobjekts teilen können. Die Funktion des Prototyps besteht darin, die gemeinsamen Eigenschaften und Methoden des Objekts zu definieren. Damit mehrere Objekte die Eigenschaften und Methoden desselben Prototypobjekts gemeinsam nutzen können und die Funktion der Prototypkette darin besteht, die Vererbungsbeziehung zwischen Objekten usw. zu realisieren.

Der Grund für die Existenz von Prototypen und Prototypketten besteht darin, die Vererbung und gemeinsame Nutzung von Objekteigenschaften in der JavaScript-Sprache zu implementieren. In JavaScript ist alles ein Objekt, auch Funktionen. Jedes Objekt verfügt über eine Eigenschaft, die als Prototyp bezeichnet wird und auf ein anderes Objekt verweist, das als Prototypobjekt bezeichnet wird. Objekte können Eigenschaften und Methoden von Prototypobjekten erben. Der Vorteil der Implementierung gemeinsamer Eigenschaften und Methoden durch Prototypen liegt in der Speichereinsparung. Betrachten Sie ein Objekt A, das über einige Eigenschaften und Methoden verfügt, erstellen Sie dann Objekt B und erstellen Sie es

Einfach verstanden ist die Prototypenkette eine Kette, die aus Prototypen besteht. Beim Zugriff auf ein Attribut eines Objekts wird zunächst nach dem Attribut des Objekts selbst gesucht. Wenn es nicht gefunden wird, wird nach seinem impliziten Prototyp __proto__ gesucht, d. h. nach dem Prototyp seines Konstruktors Dennoch wird dann im __proto__ des Prototyps des Konstruktors gesucht. Auf diese Weise wird durch die Suche nach oben eine Kettenstruktur gebildet, die als Prototypenkette bezeichnet wird.

Eingehende Analyse: Die Rolle von Prototypen und Prototypenketten in der objektorientierten Programmierung erfordert spezifische Codebeispiele. In der objektorientierten Programmierung (OOP) sind Prototypen (Prototype) und Prototypenketten (PrototypeChain) wichtige Konzepte. Sie bieten einen objektbasierten Mechanismus zur Wiederverwendung von Code und spielen eine Schlüsselrolle in Sprachen wie Javascript. In diesem Artikel werden wir uns eingehend mit den Konzepten von Prototypen und Prototypenketten befassen, ihre Rolle in OOP untersuchen und anhand konkreter Codebeispiele veranschaulichen

Die Funktion des js-Prototyps und der Prototypenkette besteht darin, die Vererbung von Objekten zu realisieren, Speicherplatz zu sparen und die Leistung und Wartbarkeit des Codes zu verbessern. Detaillierte Einführung: 1. Implementieren Sie die Vererbung von Objekten. Mit dem Prototyp und der Prototypenkette können Sie ein Objekt erstellen und die Eigenschaften und Methoden eines anderen Objekts erben Das neue Objekt kann auf die Eigenschaften und Methoden des Prototypobjekts zugreifen. In JavaScript verfügt jedes Objekt über einen Prototyp.

Erkundung der einzigartigen Merkmale von Prototypen und Prototypenketten In JavaScript sind Prototypen und Prototypenketten sehr wichtige Konzepte. Das Verständnis der einzigartigen Merkmale von Prototypen und Prototypketten kann uns helfen, die Vererbung und Objekterstellung in JavaScript besser zu verstehen. Ein Prototyp ist eine Eigenschaft, die jedem Objekt in JavaScript gehört, die auf ein anderes Objekt verweist und zum Teilen von Eigenschaften und Methoden verwendet wird. Jedes JavaScript-Objekt hat einen Prototyp
