Ich lese gerade Javascript: The Good Parts durch und habe mich bemüht, mich mit dem Abschnitt über Prototypen vertraut zu machen .
Nach ein wenig googeln bin ich zu dem Schluss gekommen, dass Objekte nach der Objektdeklaration mit Eigenschaften versehen werden sollen .
Bei Verwendung dieses Skripts aus w3schools stellte ich fest, dass das Entfernen der Zeile zum Hinzufügen der Prototyp-Eigenschaft keine Auswirkungen hatte . Worum geht es also?
//Prototyping
function employee(name,jobtitle,born)
{
this.name=name;
this.jobtitle=jobtitle;
this.born=born;
}
var fred=new employee("Fred Flintstone","Caveman",1970);
employee.prototype.salary=null; // <--- try removing this line
fred.salary=20000;
document.write (fred.salary);
javascript
prototyping
technique
Milder Flaum
quelle
quelle
Antworten:
So funktioniert der Prototyp nicht. Der Prototyp wird in der Prototypenkette verwendet.
Wenn Sie versuchen, eine Eigenschaft für ein Objekt abzurufen, wird das Objekt auf diesen Eigenschaftsnamen überprüft. Wenn es nicht existiert, wird es im Prototyp angezeigt.
Beispiel:
Der Punkt des Prototyps ist also einfach die Wiederverwendung und Vererbung von Code.
quelle
prototype is undefined
---o.prototype.newProp = "mutts nuts";
o
ist ein Objekt. Die.prototype
Eigenschaft wird für Funktionen verwendet. Ignorieren Sie sie. Tuno.newProp = "mutts nuts"
Als Sie dies getan haben
fred.salary=20000
, haben Sie das Gehaltsattribut nur zu Fred hinzugefügt. Bei Verwendung des Prototyps haben alle Mitarbeiter, die Sie fortan erstellen, das Gehaltsattribut.Angenommen, Sie haben 100 Instanzen von Mitarbeitern und möchten allen ein Gehaltsattribut hinzufügen. Sie können es manuell durchlaufen, über jeden Mitarbeiter iterieren und es hinzufügen. Oder Sie könnten einen Prototyp verwenden und festlegen, ob für alle.
Der Prototyp ist nützlich, wenn Sie Funktionen für etwas bereitstellen möchten, das bereits vorhanden ist. Angenommen, Sie möchten Arrays eine benutzerdefinierte Methode hinzufügen. Sie würden so etwas tun wie:
Von da an steht allen von Ihnen erstellten Arrays diese Methode zur Verfügung.
quelle
Vielleicht möchten Sie sich diesen Artikel ansehen .
Wenn Sie einem Objekt, das als Prototyp für eine Reihe von Objekten verwendet wird, eine Eigenschaft hinzufügen, erhalten die Objekte, für die es sich um den Prototyp handelt, auch die neue Eigenschaft.
Dies ist einer der Hauptvorteile einer prototypbasierten Sprache gegenüber klassenbasierten.
Es ist auch einfach, bei Bedarf eine klassische OO-Vererbung mit JS zu erhalten, aber es ist oft schwierig, ein Prototypmodell für eine Sprache zu erhalten, die es nicht standardmäßig implementiert.
quelle