1. Übersicht 1.1 Was ist ein Prototyp? In Die Prototype-Eigenschaft ist in der Funktionsdefinition enthalten und ihr Anfangswert ist ein leeres Objekt. In JavaScript ist für Funktionen kein primitiver Typ definiert, der Prototyp kann also ein beliebiger Typ sein. Der Prototyp wird verwendet, um die gemeinsam genutzten Eigenschaften und Methoden des Objekts zu speichern. Die Eigenschaften und Methoden des Prototyps wirken sich nicht auf die Eigenschaften und Methoden der Funktion selbst aus. Die Beispielcodeüberprüfung erfolgt wie folgt: Funktion Spaß() { console.log('Funktionsprototyp') } konsole.log(spaß.prototyp) // {}
Funktion Spaß() { console.log('Funktionsprototyp') } konsole.log(spaß.prototyp) // {} // Alle Eigenschaften über Object.getOwnPropertyNames() abrufen console.log(Object.getOwnPropertyNames(fun.prototype)) // [ 'constructor' ] Unter ihnen zeigt das Konstruktorattribut auf die Referenz des Konstruktors. Der Code lautet wie folgt: // Konstruktor-Eigenschaft console.log(fun.prototype.constructor) // [Funktion: fun] Konsole.log(Spaß.Prototyp.Konstruktor === Spaß) // wahr 1.2 Holen Sie sich den Prototyp Nachdem wir das Konzept und die Funktion des Prototyps verstanden haben, müssen wir den Prototypen erhalten, bevor wir ihn betreiben können. Es gibt zwei Möglichkeiten, den Prototyp in Durch Durch Der Unterschied zwischen beiden besteht darin, dass die Prototypeigenschaft des Konstruktors im Allgemeinen nur in Verbindung mit dem Konstruktor verwendet wird, während die Methode Object.getPrototypeOf(obj) im Allgemeinen eine Methode zum Abrufen des Prototyps des vom Konstruktor instanziierten Objekts ist. Der Beispielcode lautet wie folgt: // Konstruktorfunktion Person(Name) { dieser.name = Name } //Zeigt auf den Prototyp des Konstruktors var p1 = Person.prototype var person = neue Person('Yiwan Zhou') // Auf den Prototyp des Konstruktors zeigend var p2 = Object.getPrototypeOf(person) konsole.log(p1 === p2) // wahr Nachdem Sie den Prototyp erhalten haben, können Sie ihn wie ein Objekt bedienen, da der Prototyp selbst ein Objekt ist. 2. Prototyp-Eigenschaften In 2.1 Verwenden Sie Prototypen, um Eigenschaften und Methoden hinzuzufügen.Eine andere Möglichkeit, einem Objekt Eigenschaften und Methoden hinzuzufügen, besteht darin, sie über seinen Prototyp hinzuzufügen. Wenn Sie einem Konstruktor Prototypeigenschaften und Prototypmethoden hinzufügen, teilen sich alle vom Konstruktor neu erstellten Objekte die Eigenschaften und Methoden. PS: Bei den sogenannten Prototyp-Eigenschaften bzw. Prototyp-Methoden handelt es sich um durch den Prototyp hinzugefügte Eigenschaften bzw. Methoden. Es gibt mehrere Möglichkeiten, Eigenschaften und Methoden hinzuzufügen: Fügen Sie ihm direkt Attribute oder Methoden hinzu Fügen Sie Eigenschaften oder Methoden über Fügen Sie Objekte direkt zum Prototyp hinzu. Der Beispielcode lautet wie folgt: //Konstruktorfunktion Fun() {} //Eigenschaften und Methoden direkt zum Konstruktor hinzufügen Fun.prototype.str = 'Dies ist ein String' Fun.prototype.fn = Funktion () { console.log('Dies ist eine Methode') } //Eigenschaften oder Methoden über defineProperty hinzufügen Object.defineProperty(Fun.prototype, 'MyFun', { Wert: Funktion () { console.log('das ist MyFun') }, }) //Testkonsole.log(Fun.prototype.str) Spaß.prototype.fn() Spaß.prototype.MeinSpaß() var Spaß = neuer Spaß() Spaß.MeinSpaß() //Definieren Sie direkt ein Objekt, um den vorherigen Prototyp abzudecken. Fun.prototype = { Name: 'Eine Schale Zhou', Spaß: Funktion () { console.log('das ist eine Funktion') }, } Spaß.prototype.spaß() var Spaß = neuer Spaß() spaß.spaß() 2.2 Zugriff auf Prototypeigenschaften und Prototypmethoden Das Wichtigste an einem Prototyp ist seine Echtzeitnatur. Da fast alle Objekte in JavaScript per Referenz übergeben werden, verfügt nicht jede neue Objektentität, die wir erstellen, über eine eigene Kopie des Prototyps. Dies bedeutet, dass wir Unter Verwendung des obigen Codes fügen wir dem Prototyp eine neue Methode hinzu und rufen sie auf. Der Beispielcode lautet wie folgt: Fun.prototype.fn = Funktion () { console.log('Dies ist eine Methode') } fun.fn() //Dies ist eine Methode Die Objekte, die wir zuvor erstellt haben, können auf die neu hinzugefügten Prototypeigenschaften und Prototypmethoden zugreifen. 3. Eigene Eigenschaften und PrototypeneigenschaftenLassen Sie uns zunächst einen Konstruktor erstellen und ihm zwei Prototypeigenschaften hinzufügen. //Konstruktorfunktion Fun() {} //Prototypeigenschaften und -methoden hinzufügen Fun.prototype.name = 'eine Schüssel Haferbrei' Fun.prototype.print = Funktion () { console.log('das ist eine Funktion') } Erstellen Sie ein Objekt über den Konstruktor und legen Sie seine Eigenschaften und Methoden fest //Erstelle ein Objekt durch den Konstruktor var fun = new Fun() // Dem Objekt Eigenschaften und Methoden hinzufügen fun.name = 'Yiwan Zhou' Spaß.SayMe = Funktion () { console.log('das ist SayMe') } Jetzt hat unser //Zugriff auf Eigenschaften und Methoden console.log(fun.name) // Yiwan Zhou fun.SayMe() // das ist SayMe fun.print() // dies ist eine Funktion Wenn wir auf die
3.1 Erkennen eigener Eigenschaften oder Prototyp-EigenschaftenJetzt kennen wir die Konzepte und Verwendungen von eigenen Eigenschaften und Prototyp-Eigenschaften. Aber woher wissen wir, ob eine Eigenschaft eine freie oder eine ursprüngliche Eigenschaft ist? JavaScript bietet die folgenden zwei Möglichkeiten, den Status einer Eigenschaft zu erkennen. Verwenden Sie Verwenden Sie das Schlüsselwort „in“, um festzustellen, ob das Objekt und die Prototypkette über die angegebene Eigenschaft verfügen. Der Testcode lautet wie folgt: // Verwenden Sie die Methode Object.prototype.hasOwnProperty(prop), um zu überprüfen, ob es sich um eine eigene Eigenschaft handelt. console.log(fun.hasOwnProperty('name')) // true console.log(fun.hasOwnProperty('print')) // falsch // Wenn ein nicht vorhandenes Attribut erkannt wird, ist das Ergebnis ebenfalls falsch console.log(fun.hasOwnProperty('SayMe')) // wahr // über den Operator console.log('name' in fun) // true console.log('drucken' in fun) // true console.log('SagMe' im Spaß) // true Durch Tests haben wir festgestellt, dass diese beiden Methoden nicht erkennen können, ob es sich bei einer Eigenschaft um eine eigene Eigenschaft oder eine Prototyp-Eigenschaft handelt. Durch die Kombination dieser beiden Methoden lässt sich jedoch erkennen, ob es sich um eine eigene Eigenschaft oder eine Prototyp-Eigenschaft handelt. Der Beispielcode lautet wie folgt: Funktion Erkennungsattribute(Objekt, Attribut) { wenn (Attr in Objekt) { wenn (obj.hasOwnProperty(attr)) { // Wenn es ein eigenes Attribut ist, gib 1 zurück Rückgabe 1 } anders { // Wenn es sich um eine Prototypeigenschaft handelt, geben Sie 0 zurück. Rückgabe 0 } } anders { // Wenn es kein solches Attribut gibt, gib -1 zurück Rückgabe -1 } } Der Test läuft wie folgt ab:
4. isPrototypeOf()-Methode Mit Der Beispielcode lautet wie folgt: // Definieren Sie ein Objekt, das dem Prototypobjekt zugewiesen werden soll var obj = function () { this.name = 'Eine Schüssel Zhou' } var Hero = function () {} // Konstruktor definieren // Dem Prototyp des Konstruktors das definierte Objekt zuweisen Hero.prototype = obj // Erstelle ein Objekt durch Hero var hero1 = new Hero() var hero2 = neuer Held() // Bestimmen Sie, ob sich die beiden erstellten Objekte in der Prototypenkette von obj befinden console.log(obj.isPrototypeOf(hero1)) // true console.log(obj.isPrototypeOf(hero2)) // wahr 5. Erweitern integrierter Objekte Einige der integrierten Objekte in JavaScript haben auch Die Eigenschaften und Methoden integrierter Objekte können sehr flexibel durch Prototypen erweitert werden, und der spezifische Inhalt der JavaScript-Sprache kann entsprechend den personalisierten Anforderungen formuliert werden. Es gibt zwei Möglichkeiten, integrierte Objekte zu erweitern: Durch direktes Hinzufügen neuer Eigenschaften und Methoden. Verwenden Sie die Methode Der Beispielcode lautet wie folgt: // Eigenschaften und Methoden für Objekt erweitern // Erste Methode verwenden Object.prototype.MyPrint = function () { console.log('das ist MyPrint()') } // Verwenden der zweiten Methode Object.defineProperty(Object.prototype, 'MyInput', { Wert: Funktion () { console.log('das ist MyInput()') }, }) // Rufen Sie Object.prototype.MyPrint() auf // das ist MyPrint() Object.prototype.MyInput() // das ist MyInput() 6. FazitDieser Artikel stellt das Konzept des Prototyps in JavaScript und die Eigenschaften von Prototypen vor, zeigt, wie eigene Eigenschaften und Prototypeigenschaften erkannt werden und wie integrierte Objekte erweitert werden. Dies ist das Ende dieses Artikels über die Details des JavaScript-Prototyps. Weitere relevante Inhalte zum JavaScript-Prototyp finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
>>: Master-Slave-Synchronisationskonfiguration der Mysql-Datenbank
Das Kubernetes-Team hat vor Kurzem angekündigt, d...
Einführung der Server-U-Software Server-U ist ein...
Dokumentumfang Dieser Artikel behandelt den Modus...
#!/bin/bash #SVN herunterladen yum -y installiere...
Inhaltsverzeichnis Vorwort Was ist ein Filter So ...
Einfache Anwendungsbereitstellung 1. Verzeichniss...
Syntaxformat: row_number() über (Partition durch ...
Website-Link: http://strml.net/ Von Samuel Reed T...
Zusammenfassung: Damit Ihre Webseite schöner auss...
In diesem Abschnitt beschreibt der Autor die spez...
Inhaltsverzeichnis (1) Einleitung: (2) Zum Kopier...
Docker virtualisiert eine Brücke auf dem Host-Rec...
Nach den Änderungen: innodb_buffer_pool_size=576M...
1. Einleitung Der Befehl ls dient zum Anzeigen de...
In diesem Artikel wird der spezifische Code von V...