Leicht verständliche Analyse von JS-Prototypen und Prototypenketten
Dieses Mal werde ich Ihnen eine leicht verständliche Analyse von JS-Prototypen und Prototypketten geben. Was sind die Vorsichtsmaßnahmen für das Parsen von JS-Prototypen und Prototypketten? .
Objekte im Browser
Welche Objekte gibt es im Browser? In ES ist das globale Objekt global, während es in Browsern das globale Objekt Fenster ist.
Geben Sie window in der Chrome-Konsole ein und wir können sehen, was sich im Fenster befindet.
Die folgenden Objekte können im Fenster gefunden werden.
Attribute wie Object, String, Numbr, Boolean, Array, Date, Math, parseInt und parseFloat sind alle von ES angegebene erforderliche Objekte.
Zum Beispiel „Dokument“, „Warnung“, „Eingabeaufforderung“, „ATOB“ usw. Dies sind in den Browser integrierte Attribute.
Diese Objekte haben alle Hash-Strukturen. Unter „Objekt“ verfügt String beispielsweise über eigene Attribute und Methoden sowie entsprechende API-Aufrufe.
Einfache Typen und Objekte
Die Beispiele lauten wie folgt: n1 ist ein einfacher Typ und n2 ist ein Objekt.
var n1 = 'a'var n2 = new String('a') n1.length n1.hasOwnProperty('0') n2.length n2.hasOwnProperty('0') n1.xxx = 2n1.xxx // undefined
Differenz
Der n1-Wert wird im Stapel gespeichert. Wenn n2 zugewiesen wird, wird im Stapel eine Adresse erstellt, die auf den Heap zeigt, und im Heap-Speicher wird ein neues Objekt vom Typ String erstellt. Sie können sehen, dass es im Objekt n2 einige Attribute sowie das Prototyp-Attribut gibt.
Attribute
n2 ist ein Objekt, das ein Längenattribut hat, daher heißt es. n1 ist nur eine Zeichenfolge . Warum hat sie auch ein Längenattribut
? Es kann so verstanden werden: Wenn n1.length, führt js die folgenden Operationen aus: var temp = new String(n1);n1.length ;Das heißt, bei Verwendung von Attributen oder Methoden wird vorübergehend ein neues Objekt im Heap-Speicher erstellt. Dieses Objekt ist vom entsprechenden String-Typ und wird nach der Ausführung zerstört. Daher meldet die Operation n1.xxx = 2 keinen Fehler, n1.xxx zeigt jedoch erneut undefiniert an, da die Daten von n1 im Heap-Speicher zu diesem Zeitpunkt zerstört wurden.
Daher wird in js die neue Methode eines neuen Objekts selten verwendet, sondern die Variable wird direkt zugewiesen.
hasOwnProperty() in n2
hasOwnProperty() ist eine Methode im Typ Object-Klasse. Sie ist nicht unter dem Typ Sting zu finden.
Hier ist hasOwnProperty() in n2.proto.proto. n2.proto zeigt auf String.prototype und String.prototype.proto zeigt schließlich auf Object.prototype. String ist ein Prototyp und Object ist ebenfalls ein Prototyp. Object.prototype speichert alle öffentlichen Eigenschaften des Objekttyps.
Auf diese Weise kann effektiv Platz gespart und die Aufzeichnung vieler Attribute in jedem Objekt vermieden werden. Suchen Sie nach Attributen, die in einem Objekt nicht gefunden werden, in dem Objekt, auf das Proto zeigt. Der Punkt, auf den verwiesen wird, ist normalerweise der Prototyp eines bestimmten Prototyps.
Wo finde ich Proto und Prototyp?
var n = new Number(1)var s= new String('1')var o= new Object()
Die oben genannten Methoden können als var object = function () betrachtet werden.
Zusammenfassend: object.proto = function.prototype.
Proto besuchen
Proto ist relativ zum Objekt, um zu sehen, wer das Objekt generiert hat. Für n ist der Vater Number. Gehen Sie also zu Number.prototype, um ihn zu finden. Es gibt auch ein Proto in Number. Suchen Sie beim Zugriff danach im übergeordneten Objekt.
Function String.proto === Function.prototype //true
Funktionen können auch als Objekte betrachtet werden. Zeichenfolge, Objekt und Zahl sind allesamt Objekte und Funktionen. Da zuvor new String() verwendet wurde, handelt es sich um eine Funktion und der Datentyp des Funktionsrückgabeergebnisses ist Objekt. Strings Vater ist Function.
Function.proto === Function.prototype //trueFunction.prototype.proto === Object.prototype //trueFunction.proto.proto === Object.prototype //true
Wenn die Funktion als ein von der Funktionsmethode generiertes Objekt betrachtet wird,
das heißt, var Function = new Function()
kann Function.proto == verstehen = Function.prototype
Der Typ der Funktion ist die Funktion, die aus der Funktion konstruiert wird. Der Zusammenhang ist aus dem Bild oben ersichtlich. Bei new String () ist der String-Typ ebenfalls eine Funktion, und String.proto zeigt auf Function.prototype.
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!
Empfohlene Lektüre:
So vermeiden Sie Funktionen und Browser-Inferenzen in JS
Detaillierte Erläuterung der Anwendungsfälle für JS-Fassadenmuster
Das obige ist der detaillierte Inhalt vonLeicht verständliche Analyse von JS-Prototypen und Prototypenketten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

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



Eingehende Analyse der Rolle und Anwendungsszenarien des HTTP-Statuscodes 460. Der HTTP-Statuscode ist ein sehr wichtiger Teil der Webentwicklung und wird verwendet, um den Kommunikationsstatus zwischen Client und Server anzuzeigen. Unter diesen ist der HTTP-Statuscode 460 ein relativ spezieller Statuscode. In diesem Artikel werden seine Rolle und Anwendungsszenarien eingehend analysiert. Definition des HTTP-Statuscodes 460 Die spezifische Definition des HTTP-Statuscodes 460 lautet „ClientClosedRequest“, was bedeutet, dass der Client die Anfrage schließt. Dieser Statuscode wird hauptsächlich zur Anzeige verwendet

iBatis und MyBatis: Analyse der Unterschiede und Vorteile Einführung: In der Java-Entwicklung ist Persistenz eine häufige Anforderung, und iBatis und MyBatis sind zwei weit verbreitete Persistenz-Frameworks. Obwohl sie viele Gemeinsamkeiten aufweisen, gibt es auch einige wesentliche Unterschiede und Vorteile. Dieser Artikel vermittelt den Lesern ein umfassenderes Verständnis durch eine detaillierte Analyse der Funktionen, der Verwendung und des Beispielcodes dieser beiden Frameworks. 1. iBatis-Funktionen: iBatis ist ein älteres Persistenz-Framework, das SQL-Zuordnungsdateien verwendet.

Ausführliche Erklärung des Oracle-Fehlers 3114: Um ihn schnell zu beheben, sind spezifische Codebeispiele erforderlich. Bei der Entwicklung und Verwaltung von Oracle-Datenbanken stoßen wir häufig auf verschiedene Fehler, unter denen Fehler 3114 ein relativ häufiges Problem ist. Fehler 3114 weist normalerweise auf ein Problem mit der Datenbankverbindung hin, das durch einen Netzwerkfehler, einen Stopp des Datenbankdienstes oder falsche Einstellungen der Verbindungszeichenfolge verursacht werden kann. In diesem Artikel wird die Ursache des Fehlers 3114 ausführlich erläutert und wie dieses Problem schnell gelöst werden kann. Außerdem wird der spezifische Code angehängt

[Analyse der Bedeutung und Verwendung von Mittelpunkt in PHP] In PHP ist Mittelpunkt (.) ein häufig verwendeter Operator, der zum Verbinden zweier Zeichenfolgen oder Eigenschaften oder Methoden von Objekten verwendet wird. In diesem Artikel befassen wir uns eingehend mit der Bedeutung und Verwendung von Mittelpunkten in PHP und veranschaulichen sie anhand konkreter Codebeispiele. 1. String-Mittelpunkt-Operator verbinden Die häufigste Verwendung in PHP ist das Verbinden zweier Strings. Indem Sie . zwischen zwei Saiten platzieren, können Sie diese zu einer neuen Saite zusammenfügen. $string1=&qu

Wormhole ist führend in der Blockchain-Interoperabilität und konzentriert sich auf die Schaffung robuster, zukunftssicherer dezentraler Systeme, bei denen Eigentum, Kontrolle und erlaubnislose Innovation im Vordergrund stehen. Die Grundlage dieser Vision ist das Bekenntnis zu technischem Fachwissen, ethischen Grundsätzen und Community-Ausrichtung, um die Interoperabilitätslandschaft mit Einfachheit, Klarheit und einer breiten Palette von Multi-Chain-Lösungen neu zu definieren. Mit dem Aufkommen wissensfreier Nachweise, Skalierungslösungen und funktionsreicher Token-Standards werden Blockchains immer leistungsfähiger und Interoperabilität wird immer wichtiger. In dieser innovativen Anwendungsumgebung eröffnen neuartige Governance-Systeme und praktische Funktionen beispiellose Möglichkeiten für Assets im gesamten Netzwerk. Protokollentwickler setzen sich nun mit der Frage auseinander, wie sie in dieser aufstrebenden Multi-Chain agieren sollen

Analyse der neuen Funktionen von Win11: So überspringen Sie die Anmeldung bei einem Microsoft-Konto. Mit der Veröffentlichung von Windows 11 haben viele Benutzer festgestellt, dass es mehr Komfort und neue Funktionen bietet. Einige Benutzer möchten jedoch möglicherweise nicht, dass ihr System an ein Microsoft-Konto gebunden ist, und möchten diesen Schritt überspringen. In diesem Artikel werden einige Methoden vorgestellt, mit denen Benutzer die Anmeldung bei einem Microsoft-Konto in Windows 11 überspringen können, um ein privateres und autonomeres Erlebnis zu erreichen. Lassen Sie uns zunächst verstehen, warum einige Benutzer zögern, sich bei ihrem Microsoft-Konto anzumelden. Einerseits befürchten einige Benutzer, dass sie

Detaillierte Analyse und Beispiele von Exponentialfunktionen in der C-Sprache Einführung: Die Exponentialfunktion ist eine gängige mathematische Funktion, und es gibt entsprechende Bibliotheksfunktionen für Exponentialfunktionen, die in der C-Sprache verwendet werden können. In diesem Artikel wird die Verwendung von Exponentialfunktionen in der C-Sprache, einschließlich Funktionsprototypen, Parametern, Rückgabewerten usw., detailliert analysiert und spezifische Codebeispiele gegeben, damit die Leser Exponentialfunktionen besser verstehen und verwenden können. Text: Die Exponentialfunktionsbibliothek function math.h in der C-Sprache enthält viele Funktionen im Zusammenhang mit Exponentialfunktionen, von denen die exp-Funktion am häufigsten verwendet wird. Der Prototyp der exp-Funktion ist wie folgt

Aus Platzgründen folgt hier ein kurzer Artikel: Apache2 ist eine häufig verwendete Webserver-Software und PHP ist eine weit verbreitete serverseitige Skriptsprache. Beim Erstellen einer Website stößt man manchmal auf das Problem, dass Apache2 die PHP-Datei nicht korrekt analysieren kann, was dazu führt, dass der PHP-Code nicht ausgeführt werden kann. Dieses Problem wird normalerweise dadurch verursacht, dass Apache2 das PHP-Modul nicht richtig konfiguriert oder das PHP-Modul nicht mit der Version von Apache2 kompatibel ist. Im Allgemeinen gibt es zwei Möglichkeiten, dieses Problem zu lösen: Die eine ist
