Heim Web-Frontend js-Tutorial Was genau ist Prototyp in Javascript? Javascript-Tipps

Was genau ist Prototyp in Javascript? Javascript-Tipps

May 16, 2016 pm 03:15 PM

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
}
}
Nach dem Login kopieren

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";
Nach dem Login kopieren

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()
Nach dem Login kopieren

Warum ist der Wert von Alert nicht „js“? Der Ablauf läuft ungefähr wie folgt ab:

var test={};
uw3c.call(test);
Nach dem Login kopieren

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(); 
Nach dem Login kopieren

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"; 
Nach dem Login kopieren

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 
Nach dem Login kopieren

Ü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(); 
Nach dem Login kopieren

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); 
Nach dem Login kopieren

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(); 
Nach dem Login kopieren

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")
}
}
} 
Nach dem Login kopieren

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(); 
Nach dem Login kopieren

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.

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Zwei -Punkte -Museum: Alle Exponate und wo man sie finden kann
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ersetzen Sie Stringzeichen in JavaScript Ersetzen Sie Stringzeichen in JavaScript Mar 11, 2025 am 12:07 AM

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

8 atemberaubende JQuery -Seiten -Layout -Plugins 8 atemberaubende JQuery -Seiten -Layout -Plugins Mar 06, 2025 am 12:48 AM

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

Erstellen Sie Ihre eigenen AJAX -Webanwendungen Erstellen Sie Ihre eigenen AJAX -Webanwendungen Mar 09, 2025 am 12:11 AM

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

10 Mobile Cheat Sheets für die mobile Entwicklung 10 Mobile Cheat Sheets für die mobile Entwicklung Mar 05, 2025 am 12:43 AM

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

Verbessern Sie Ihr JQuery -Wissen mit dem Quell Betrachter Verbessern Sie Ihr JQuery -Wissen mit dem Quell Betrachter Mar 05, 2025 am 12:54 AM

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 JQuery Fun- und Games -Plugins 10 JQuery Fun- und Games -Plugins Mar 08, 2025 am 12:42 AM

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

Wie erstelle ich meine eigenen JavaScript -Bibliotheken? Wie erstelle ich meine eigenen JavaScript -Bibliotheken? Mar 18, 2025 pm 03:12 PM

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

JQuery Parallax Tutorial - Animated Header Hintergrund JQuery Parallax Tutorial - Animated Header Hintergrund Mar 08, 2025 am 12:39 AM

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

See all articles