


Beispiele für Instanzobjekte und Prototypobjekte in JavaScript_Grundkenntnisse
Erklären Sie zunächst Folgendes: Jedes Objekt in JavaScript verfügt über ein Konstruktorattribut und ein Prototypattribut. Der Konstruktor zeigt auf den Konstruktor des Objekts, und der Prototyp zeigt auf das Prototypobjekt der Objektinstanz, die mit dem Konstruktor erstellt wurde.
function Person(){ } var person = new Person(); Person.prototype = { constructor : Person, name : 'zxs', age : 24, sayName : function(){alert(this.name)} } person.sayName();
In diesem Code wird ein Fehler gemeldet, sayName() ist nicht definiert. Laut JavaScript Advanced Programming Second Edition liegt dies daran, dass der überschriebene Prototyp die Verbindung zwischen dem Konstruktor und dem ursprünglichen Prototyp unterbricht. Aber passen wir die Reihenfolge der obigen Aussagen an. Wie folgt:
function Person(){ } //var person = new Person(); Person.prototype = { constructor : Person, name : 'zxs', age : 24, sayName : function(){alert(this.name)} } /*===========================================================*/ var person = new Person(); /*===========================================================*/ person.sayName(); // zxs alert(person.constructor) //function Object() { [native code]} or function Person() {} 取决与蓝色的语句是否有效
Achten Sie auf die Anweisungen zwischen den Gleichheitszeichen in den beiden Codeteilen oben. Wenn Sie den Code in der Reihenfolge des zweiten Absatzes schreiben, wird „zxs“ ausgegeben. Dieses Ergebnis zeigt, dass der im ersten Fall gemeldete Fehler nicht darauf zurückzuführen ist, dass die Verbindung zwischen dem Konstruktor und der ursprünglichen Idee unterbrochen wurde .
Person.prototype = {}
Es ist ursprünglich eine Möglichkeit, Objekte zu definieren, und das Konstruktorattribut jedes Objekts in JavaScript verweist standardmäßig auf den Objektkonstruktor. Dies ist nicht schwer zu zeigen, dass das Umschreiben des Prototypobjekts die Verbindung zwischen dem Konstruktor und dem Objekt unterbricht Dies bedeutet jedoch nicht, dass die Person nicht mehr auf die Funktion sayName() zugreifen kann, nachdem diese Verbindung getrennt wurde.
Nun gibt es diese Annahme: Das Prototypobjekt, auf das das Prototypattribut der Funktion zeigt, ist nicht genau dasselbe wie das neu erstellte Prototypobjekt, das wir anzeigen. Wenn wir eine Funktion aufrufen, prüfen wir zunächst, ob das Prototypobjekt in der aktuellen Umgebung vorhanden ist. Wir werden nach ihren Eigenschaften und Methoden suchen. Basierend auf dem Suchergebnis wird ein Prototypobjekt zurückgegeben. Die Eigenschaften und Methoden in diesem Objekt verwenden immer zuerst die Eigenschaften und Methoden im Standardprototyp, d. h. die in definierten Eigenschaften und Methoden der Konstrukteur. Wenn die aufgerufene Methode oder Eigenschaft im Standardprototyp nicht vorhanden ist, werden die in Person.prototype = {} definierten Eigenschaften und Methoden verwendet.
Javascript ist eine interpretierte Sprache und Anweisungen werden nacheinander ausgeführt, wenn wir das Schlüsselwort new zum Erstellen eines neuen Objekts verwenden. Dies bedeutet, dass die Methoden und Die darin definierten Eigenschaften können in der aktuellen Ausführungsumgebung nicht gefunden werden und die Methode ist im Konstruktor nicht vorhanden, sodass ein Fehler auftritt. Ebenso wie eine Variable kann sie nicht verwendet werden, wenn das Programm beim Zuweisen eines Werts nicht ausgeführt wird. Im zweiten Absatz ist die aufgerufene Methode bereits in der Umgebung vorhanden und das Prototypobjekt des Konstruktors wurde erstellt, sodass das Ergebnis abgerufen werden kann.
Sehen Sie sich das folgende Programm an:
////////////////////////////////////////////////////////////////////////// function Person(){} /*===========================================================*/ var person = new Person(); Person.prototype.name = 'song'; /*===========================================================*/ //Person.prototype.sayName = function(){alert(this.name)}; Person.prototype = { constructor : Person, name : 'zxs', age : 24, sayName : function(){alert(this.name)} } person.sayName(); // error ////////////////////////////////////////////////////////////////////////// function Person(){ } /*var person = new Person();*/ Person.prototype.name = 'song'; /*Person.prototype.sayName = function(){alert(this.name)};*/ Person.prototype = { constructor : Person, name : 'zxs', age : 24, sayName : function(){alert(this.name)} } /*===========================================================*/ var person = new Person(); /*===========================================================*/ person.sayName(); // zxs
Hier ist ersichtlich, dass mit Person.prototype.name = '' auf das Objekt zugegriffen werden kann, unabhängig davon, wo es erstellt wird. Wenn durch diese Methode sowohl ein Objektliteral als auch ein Prototypobjekt definiert sind, gilt das spätere Als Endwert wird das definierte Objekt verwendet. Und nachdem eine Objektliteraldefinition für ein Prototypobjekt verwendet wurde, muss die Definition vor der Anweisung stehen, die das Objekt erstellt, bevor darauf zugegriffen werden kann.
Instanzen können nicht auf Eigenschaften und Methoden im Prototypobjekt zugreifen, nicht zuletzt, weil durch das Überschreiben des Prototypobjekts die Verbindung zwischen dem Konstruktor und dem ursprünglichen Prototyp unterbrochen wird.
function Person(){ } var person = new Person(); Person.prototype = { //constructor : Person, name : 'zxs', age : 24, sayName : function(){alert(this.name)} } person.sayName();
Der Prototyp der Konstruktorfunktion im obigen Code ist beim Instanziieren des Objekts leer und verfügt über keine anderen Eigenschaften als die Standardeigenschaften. Das Überschreiben des Konstruktor-Prototyps trennt die Verbindung zwischen dem Konstruktor und dem ursprünglichen Prototyp.
Nach der Verwendung des neuen Operators wurden die Eigenschaften und Methoden im Prototypobjekt des Konstruktors dem Personenobjekt hinzugefügt. Da die obige Methode beim Hinzufügen neuer Eigenschaften und Methoden zum Funktionsprototyp nicht dynamisch ist, kann die Person nicht auf die neu hinzugefügten Eigenschaften und Methoden zugreifen.
Nach dem Umschreiben des Prototypobjekts sieht es wie der folgende Code aus:
var o = { name : 'zxs' } var obj = o; o = {} console.log(o.name);
Der Ausgabewert ist zu diesem Zeitpunkt undefiniert, da das Objekt ein Referenztyp ist, „=" der Zuweisungsoperator ist und die Reihenfolge der Operationen von rechts nach links erfolgt. o={} bedeutet, dass sich der Punkt von o geändert hat und ein leeres Objekt ist.
Der Unterschied zwischen Person.prototype.mothed = function() {} und Person.prototype={mothed:function(){}} ist der gleiche wie arr = [] und arr.push() Letzteres verändert sich völlig.

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



So konvertieren Sie ein MySQL-Abfrageergebnis-Array in ein Objekt: Erstellen Sie ein leeres Objekt-Array. Durchlaufen Sie das resultierende Array und erstellen Sie für jede Zeile ein neues Objekt. Verwenden Sie eine foreach-Schleife, um die Schlüssel-Wert-Paare jeder Zeile den entsprechenden Eigenschaften des neuen Objekts zuzuweisen. Fügt dem Objektarray ein neues Objekt hinzu. Schließen Sie die Datenbankverbindung.

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

In PHP ist ein Array eine geordnete Sequenz, und auf Elemente wird über einen Index zugegriffen. Ein Objekt ist eine Entität mit Eigenschaften und Methoden, die über das Schlüsselwort new erstellt werden. Der Array-Zugriff erfolgt über einen Index, der Objektzugriff über Eigenschaften/Methoden. Es werden Array-Werte und Objektreferenzen übergeben.

Golang ist eine leistungsstarke und effiziente Programmiersprache, mit der sich verschiedene Anwendungen und Dienste entwickeln lassen. In Golang sind Zeiger ein sehr wichtiges Konzept, das uns helfen kann, Daten flexibler und effizienter zu verwalten. Die Zeigerkonvertierung bezieht sich auf den Prozess der Zeigeroperation zwischen verschiedenen Typen. In diesem Artikel werden anhand konkreter Beispiele die Best Practices der Zeigerkonvertierung in Golang erläutert. 1. Grundkonzepte In Golang hat jede Variable eine Adresse, und die Adresse ist der Speicherort der Variablen im Speicher.

PHP-Funktionen können Daten in eine benutzerdefinierte Struktur einkapseln, indem sie ein Objekt mithilfe einer Return-Anweisung zurückgeben, gefolgt von einer Objektinstanz. Syntax: functionget_object():object{}. Dadurch können Objekte mit benutzerdefinierten Eigenschaften und Methoden erstellt und Daten in Form von Objekten verarbeitet werden.

Das Request-Objekt in PHP ist ein Objekt, das zur Verarbeitung von HTTP-Anfragen verwendet wird, die vom Client an den Server gesendet werden. Über das Request-Objekt können wir die Anforderungsinformationen des Clients abrufen, z. B. die Anforderungsmethode, die Anforderungsheaderinformationen, die Anforderungsparameter usw., um die Anforderung zu verarbeiten und zu beantworten. In PHP können Sie globale Variablen wie $_REQUEST, $_GET, $_POST usw. verwenden, um angeforderte Informationen zu erhalten, aber diese Variablen sind keine Objekte, sondern Arrays. Um Anfrageinformationen flexibler und bequemer bearbeiten zu können, können Sie dies tun

In C++ sind drei Punkte zu beachten, wenn eine Funktion ein Objekt zurückgibt: Der Lebenszyklus des Objekts wird vom Aufrufer verwaltet, um Speicherlecks zu verhindern. Vermeiden Sie baumelnde Zeiger und stellen Sie sicher, dass das Objekt nach der Rückkehr der Funktion gültig bleibt, indem Sie dynamisch Speicher zuweisen oder das Objekt selbst zurückgeben. Der Compiler optimiert möglicherweise die Kopiegenerierung des zurückgegebenen Objekts, um die Leistung zu verbessern. Wenn das Objekt jedoch anhand der Wertesemantik übergeben wird, ist keine Kopiegenerierung erforderlich.

Mit der Einführung der neuen Karte von Genshin Impact Version 4.4. Freunde, die Version 4.4 von Genshin Impact läutete auch das Sea Lantern Festival in Liyue ein. Gleichzeitig wird in Version 4.4 ein neuer Kartenbereich namens Shen Yu Valley eingeführt. Den bereitgestellten Informationen zufolge ist Shen Yugu tatsächlich Teil des Dorfes Qiaoying, die Spieler sind jedoch eher daran gewöhnt, es Shen Yugu zu nennen. Lassen Sie mich Ihnen nun die neue Karte vorstellen. Einführung in die neue Karte von Genshin Impact Version 4.4. Version 4.4 öffnet „Chenyu Valley·Shanggu“, „Chenyu Valley·Nanling“ und „Laixin Mountain“ im Norden von Liyue Tal·Shanggu" . ※Nach Abschluss des Prologs der Dämonengott-Quest · Akt 3: Der Drache und das Lied der Freiheit wird der Teleportationsankerpunkt automatisch freigeschaltet. 2. Qiaoyingzhuang Als die warme Frühlingsbrise erneut die Berge und Felder von Chenyu streichelte, duftend
