Was genau ist Prototyp in Javascript? Javascript-Tipps
Javascript ist ebenfalls eine objektorientierte Sprache, aber es ist eine prototypbasierte Sprache und keine klassenbasierte Sprache. In Javascript scheint es keinen großen Unterschied zwischen Klassen und Objekten zu geben.
Was ist ein Prototyp:
Das durch die Funktion definierte Objekt verfügt über ein Prototypattribut, und das Prototypattribut zeigt auf ein Prototypobjekt. Beachten Sie, dass das Prototypattribut und das Prototypobjekt zwei verschiedene Dinge sind. Achten Sie daher auf den Unterschied. Es gibt ein weiteres Konstruktorattribut im Prototypobjekt. Dieses Konstruktorattribut verweist ebenfalls auf ein Konstruktorobjekt, und dieses Konstruktorobjekt ist genau die Funktion selbst. Ist das nicht sehr kompliziert? Im Pseudocode wie folgt ausgedrückt:
var function{ prototype:prototype{ constructor:constructor == function } }
Noch nicht verstanden? Schauen Sie sich das Bild an:
Die Rolle des Prototyps:
Was genau macht dieser Prototyp? Schauen Sie sich das Beispiel unten an:
function jb51(){ } jb51.prototype.name = "a"; var test = new jb51(); alert(test.name)//"a";
Es ist seltsam, offensichtlich ist das Namensattribut nicht zum Testen festgelegt, aber warum gibt es einen Wert?
Dies ist der Beitrag des Prototyps. Das Namensobjekt im Prototypattribut in uw3c wird in das Attribut des Objekttests vererbt, nachdem uw3c vom neuen Konstruktor erstellt wurde. Weiterlesen:
var name = "js"; function jb51(name){ alert(this.name);//"css" } jb51.prototype.name = "css"; var test = new jb51(); test()
Warum ist der Wert von Alert nicht „js“? Der Ablauf läuft ungefähr wie folgt ab:
var test={}; uw3c.call(test);
Der erste Schritt besteht darin, ein neues Objekt (Test) zu erstellen.
Der zweite Schritt besteht darin, das integrierte Prototypobjekt des Objekts (Test) auf das Prototypobjekt festzulegen, auf das das Prototypattribut des Konstruktors verweist (d. h. uw3c).
Der dritte Schritt besteht darin, das Objekt (Test) als Parameter zu verwenden, um den Konstruktor (d. h. uw3c) aufzurufen, um die Initialisierungsarbeit wie die Elementeinstellung abzuschließen.
Im zweiten Schritt erschien ein neuer Begriff, der das integrierte Prototypobjekt ist. Zur Unterscheidung nenne ich ihn inobj, und inobj zeigt auf Prototypobjekt der Funktion uw3c. Alle Eigenschaften oder Funktionen, die im Prototypobjekt von uw3c erscheinen, können direkt im Testobjekt verwendet werden. Dies ist die Prototypenvererbung in JS.
Normalerweise erstellen Sie ein Objekt wie dieses:
function person(name){ this.sayHi = function(){ alert('hi ' + this.name); } this.name = name; } var p = new person("dan"); p.sayHi();
Verwenden Sie oben das Schlüsselwort new, um eine Objektinstanz über ein Objekt zu erstellen (Funktionen sind ebenfalls spezielle Objekte).
In klassenbasierten Sprachen werden Attribute oder Felder normalerweise vorab in der Klasse definiert, in Javascript können Felder jedoch nach der Erstellung des Objekts zur Klasse hinzugefügt werden.
function animal(){} var cat = new animal(); cat.color = "green";
Oben gehört das Farbfeld nur zur aktuellen Katzeninstanz.
Was wäre, wenn die später hinzugefügten Felder in allen Instanzen von animal vorhanden sein sollen?
--使用Prototype function animal(){} animal.prototype.color= "green"; var cat = new animal(); var dog = new animal(); console.log(cat.color);//green console.log(dog.color);//green
Über Prototype können nicht nur Felder, sondern auch Methoden hinzugefügt werden.
function animal(){} animal.prototype.color= "green"; var cat = new animal(); var dog = new animal(); console.log(cat.color);//green console.log(dog.color);//green animal.prototype.run = funciton(){ console.log("run"); } dog.run();
Es stellt sich heraus, dass Sie über das Prototypattribut auch das Verhalten des Objekts nach seiner Erstellung ändern können.
Sie können beispielsweise einem speziellen Objekt namens Array eine Methode hinzufügen.
Array.prototype.remove = function(elem){ var index = this.indexof(elem); if(index >= 0){ this.splice(index, 1); } } var arr = [1, 2, 3] ; arr.remove(2);
Zusätzlich zum Definieren von Attributen oder Methoden für Objekte über den Prototyp können Sie auch Klassenattribute oder -methoden über den Konstruktor des Objekts definieren.
function animal(){ this.color = "green"; this.run = function(){ console.log("run"); } } var mouse = new animal(); mouse.run();
Der obige Ansatz kann es auch ermöglichen, dass alle Tierinstanzen alle Felder und Methoden gemeinsam nutzen. Ein weiterer Vorteil besteht darin, dass Sie im Konstruktor lokale Variablen der Klasse verwenden können.
function animal(){ var runAlready = false; this.color = "green"; this.run = funciton(){ if(!runAlreadh){ console.log("start running"); } else { console.log("already running") } } }
Tatsächlich besteht ein praktischerer Ansatz darin, die Felder und Verhaltensweisen einer Klasse über den Konstruktor in Kombination mit dem Prototyp zu definieren.
function animal(){ var runAlready = false; this.run = function(){ if(!runAlready){ console.log('i am running'); } else { console.log("i am already running"); } } } animal.prototype.color = ''; animal.prototype.hide = funciton(){ console.log(""); } var horse = new animal(); horse.run(); horse.hide();
Prototype ermöglicht es uns, das Verhalten eines Objekts oder einer Klasse nach der Erstellung des Objekts zu ändern, und diese über das Prototyp-Attribut hinzugefügten Felder oder Methoden werden von allen Objektinstanzen gemeinsam genutzt.

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

Detaillierte Erläuterung der Methode für JavaScript -Zeichenfolge und FAQ In diesem Artikel werden zwei Möglichkeiten untersucht, wie String -Zeichen in JavaScript ersetzt werden: Interner JavaScript -Code und interne HTML für Webseiten. Ersetzen Sie die Zeichenfolge im JavaScript -Code Die direkteste Möglichkeit ist die Verwendung der Ersatz () -Methode: str = str.replace ("find", "ersetzen"); Diese Methode ersetzt nur die erste Übereinstimmung. Um alle Übereinstimmungen zu ersetzen, verwenden Sie einen regulären Ausdruck und fügen Sie das globale Flag G hinzu:: STR = Str.Replace (/fi

Nutzen Sie JQuery für mühelose Webseiten -Layouts: 8 Essential Plugins JQuery vereinfacht das Webseitenlayout erheblich. In diesem Artikel werden acht leistungsstarke JQuery -Plugins hervorgehoben, die den Prozess optimieren, insbesondere nützlich für die manuelle Website -Erstellung

Hier sind Sie also bereit, alles über dieses Ding namens Ajax zu lernen. Aber was genau ist das? Der Begriff AJAX bezieht sich auf eine lose Gruppierung von Technologien, mit denen dynamische, interaktive Webinhalte erstellt werden. Der Begriff Ajax, ursprünglich von Jesse J geprägt

Dieser Beitrag erstellt hilfreiche Cheat -Blätter, Referenzführer, schnelle Rezepte und Code -Snippets für die Entwicklung von Android-, Blackberry und iPhone -App. Kein Entwickler sollte ohne sie sein! Touch Gesten -Referenzhandbuch (PDF) Eine wertvolle Ressource für Desig

JQuery ist ein großartiges JavaScript -Framework. Wie in jeder Bibliothek ist es jedoch manchmal notwendig, unter die Motorhaube zu gehen, um herauszufinden, was los ist. Vielleicht liegt es daran, dass Sie einen Fehler verfolgen oder nur neugierig darauf sind, wie JQuery eine bestimmte Benutzeroberfläche erreicht

10 Fun JQuery Game -Plugins, um Ihre Website attraktiver zu machen und die Stickinität der Benutzer zu verbessern! Während Flash immer noch die beste Software für die Entwicklung von lässigen Webspielen ist, kann JQuery auch überraschende Effekte erzielen und zwar nicht mit reinen Action -Flash -Spielen vergleichbar sind, aber in einigen Fällen können Sie auch einen unerwarteten Spaß in Ihrem Browser haben. JQuery Tic Toe Game Die "Hello World" der Game -Programmierung hat jetzt eine Jquery -Version. Quellcode JQuery Crazy Word Kompositionsspiel Dies ist ein Spiel mit der Füllung, und es kann einige seltsame Ergebnisse erzielen, da das Wort nicht kennt. Quellcode JQuery Mine Sweeping Game

In Artikel werden JavaScript -Bibliotheken erstellt, veröffentlicht und aufrechterhalten und konzentriert sich auf Planung, Entwicklung, Testen, Dokumentation und Werbestrategien.

Dieses Tutorial zeigt, wie ein faszinierender Parallaxen -Hintergrundeffekt mit JQuery erstellt wird. Wir werden ein Header -Banner mit geschichteten Bildern bauen, die eine atemberaubende visuelle Tiefe erzeugen. Das aktualisierte Plugin funktioniert mit JQuery 1.6.4 und später. Laden Sie die herunter
