Alles in JavaScript ist ein Objekt: String, Array, Wert, Funktion usw. Es gibt kein Konzept in JS,
Wir können jedoch die grammatikalischen Eigenschaften von JS verwenden, um Objekte mit der Idee der Klasse zu erstellen.
Originalmethode
Kopieren Sie den Code -Code wie folgt:
<script type = "text/javaScript">
var obj = neues Objekt ();
obj.name = "koji";
obj.age = 21;
obj.showname = function () {// Methode zum Objekt hinzufügen
Alarm (this.name);
}
obj.showage = function () {
alarm (this.age);
}
Obj.Showname ();
Obj.Showage ();
</script>
Die obige Methode generiert ein Objekt über das neue Schlüsselwort und fügt dann die Eigenschaften und Methoden der Eigenschaften der dynamischen Sprache gemäß JS hinzu.
Ein Objekt erstellen. Unter ihnen ist dies ein Objekt, das die Methode nennt.
Auf diese Weise ist das Problem, dass der Code mehrmals wiederholt werden muss, was mehrmals wiederholt werden muss, was der Wiederverwendung des Codes nicht förderlich ist.
Fabrikmethode
Kopieren Sie den Code -Code wie folgt:
<script type = "text/javaScript">
Funktion createObj () {
var obj = new Object (); // Objekte erstellen
obj.name = "koji";
obj.age = 21;
obj.showname = function () {
Alarm (this.name);
}
obj.showage = function () {
alarm (this.age);
}
Rückgabe von OBJ; // kehren Sie zum Objekt zurück
}
var obj1 = createObj ();
var obj2 = createObj ();
OBJ1.SHOWNAME ();
obj2.showage ();
</script>
Diese Methode verbessert die Wiederverwendung von Code und kann auch die Werksmethode ändern und die Parameterzuordnung übergeben.
Kopieren Sie den Code -Code wie folgt:
<script type = "text/javaScript">
Funktion createObj (Name, Alter) {// Beim Erstellen von Objekten kann der Initialisierungsparameter übergeben werden
var obj = new Object (); // Objekte erstellen
obj.name = name;
obj.age = Alter;
obj.showname = function () {
Alarm (this.name);
}
obj.showage = function () {
alarm (this.age);
}
Rückgabe von OBJ; // kehren Sie zum Objekt zurück
}
var obj1 = createObj ("koji", 22);
var obj2 = createObj ("luo", 21);
OBJ1.SHOWNAME ();
obj1.Showage ();
obj2.showname ();
obj2.showage ();
</script>
Obwohl die obige Methode die Erneuerungsrate des Codes erhöhen kann, hat sie im Vergleich zum Konzept der objektorientierten Klasse einen großen Defekt. Nudel
Das relative Bild betont die Eigenschaft des Objekts, und die Methode des Objekts wird gemeinsam genutzt. Und die obige Fabrikmethode, um das Objekt für einander zu erstellen
Objekte erstellen ihre eigenen egoistischen Methoden. Gleichzeitig ist dieselbe Methode zum Erstellen der gleichen Logik für jedes Objekt eine Speicherverschwendung. Verbessert wie folgt
Kopieren Sie den Code -Code wie folgt:
<span style = "Schriftgröße: 14px;"> <skript type = "text/javaScript">
Funktion createObj (Name, Alter) {{{
var obj = new Object (); // Objekte erstellen
obj.name = name;
obj.age = Alter;
Obj.Showname = DEILDAME;
obj.showage = messe;
Rückgabe von OBJ; // kehren Sie zum Objekt zurück
}
Funktion teamname () {// Funktion ist ebenfalls ein Objekt
Alarm (this.name);
}
Funktion show () {
alarm (this.age);
}
var obj1 = createObj ("koji", 22);
var obj2 = createObj ("luo", 21);
OBJ1.SHOWNAME ();
obj1.Showage ();
obj2.showname ();
obj2.showage ();
</script> </span>
Die oben genannten Funktionsobjekte werden definiert, um die privaten Probleme verschiedener Objekte für Objekthalterungen zu lösen. Jetzt sind alle Objekte
Halten Sie den Verweis auf die beiden oben genannten Funktionen. Auf diese Weise ist die Funktion des Objekts für das Objekt unabhängig und irrelevant geworden. Das und
Spezifische Methoden für objektorientierte spezifische Methoden entsprechen nicht den Gedanken spezifischer Kategorien.
Baufunktionsmethode
Kopieren Sie den Code -Code wie folgt:
<script type = "text/javaScript">
// Definieren Sie einen Konstruktor, um das entsprechende Objekt zu erzeugen.
Funktionsperson (Name, Alter) {
// Wenn eine Person eine neue Person anruft, bevor die erste Codezeile ausgeführt wird, ist eine Person ein Personenobjekt und das Objekt befindet sich im Speicher
// Die Indexzuordnung wird zu diesem Schlüsselwort angegeben.
This.name = name; // Diese Schlüsselwörter darf nicht weniger sein. Für das aktuelle Objekt, dh die Namensattributzuordnung des Namens des Objekts, auf das das Schlüsselwort verwiesen wird
// Es entspricht tatsächlich dem Hinzufügen der Namenseigenschaft zum aktuellen Objekt und zuordnen dann seinem Namensattribut einen Wert.
this.age = Alter;
this.showname = function () {// Methode zum aktuellen Objekt hinzufügen
Alarm (this.name);
}
this.showage = function () {
alarm (this.age);
}
// Geben Sie das aktuelle Objekt an die Variable links vom Zuordnungssymbol zurück (müssen Sie keine Rückgabe verwenden).
}
Var obj1 = neue Person ("Koji", 22);
var obj2 = neue Person ("luo", 21);
OBJ1.SHOWNAME ();
obj1.Showage ();
obj2.showname ();
obj2.showage ();
</script>
Die Methode zur Konstruktion einer Funktion entspricht der Fabrikmethode und erstellt für jedes Objekt ein exklusives Funktionsobjekt. Natürlich können Sie diese Funktionen auch einsetzen
Das Objekt wird außerhalb des Konstruktors definiert, so dass die Objekte und Methoden voneinander unabhängig sind.
Prototypmethode: Die Prototyp -Eigenschaft des von dieser Methode verwendeten Objekts
Kopieren Sie den Code -Code wie folgt:
Skript type = "text/javaScript">
Funktion person () {} // Definieren Sie eine luftkonfinierte Funktion und kann die Parameter nicht übergeben
// Geben Sie alle Methoden aller Attribute an das Prototyp -Attribut an
Person.Prototype.Name = "Koji";
Person.Prototype.age = 22;
Person.Prototype.showname = function () {// Methode hinzufügen
Alarm (this.name);
}
Person.Prototype.Showage = function () {
alarm (this.age);
}
var obj1 = new Person ();
var obj2 = new Person ();
OBJ1.SHOWNAME ();
obj1.Showage ();
obj2.Showname (); // Koji
obj2.showage ();
</script>
Wenn das Personobjekt generiert wird, werden dem neuen Objekt die Attribute des Prototyps zugewiesen. Dann werden Attribute und Methoden geteilt.
Das Problem dieser Methode ist, dass der Konstruktor nicht weitergegeben werden kann und jedes neu generierte Objekt den Standardwert hat. Zweitens wird die Methodenfreigabe nicht geteilt
Jedes Problem, aber Attributfreigabe ist ein Problem, wenn das Attribut das Objekt ist, das den Status ändern kann.
Kopieren Sie den Code -Code wie folgt:
<script type = "text/javaScript">
Funktion person () {} // Definieren Sie eine luftkonfinierte Funktion und kann die Parameter nicht übergeben
Person.Prototype.age = 22;
Person.Prototype.Array = new Array ("Koji", "luo");
Person.Prototype.Showage = function () {
alarm (this.age);
}
Person.Prototype.showarray = function () {
Alarm (this.array);
}
var obj1 = new Person ();
var obj2 = new Person ();
obj1.array.push ("kyo");
obj1.showarray ();
obj2.showarray ();
</script>
Wenn der obige Code dem Attribut von OBJ1 zum Attribut von OBJ1 Elemente hinzufügt, folgt auch das Element des ARRA -Attributs von OBJ2
Der Einfluss ist, dass die Array -Eigenschaft von Obj1 und OBJ2 -Objekten dasselbe Array -Objekt zitiert. Ändern Sie also dieses Array
Objekt wird das Attribut des Array -Objekts natürlich natürlich beeinflusst
Gemischte Konstruktor-/Prototypmethode
Verwenden Sie den Konstruktor, um die Attribute des Objekts zu definieren und den Prototyp zu definieren, um Objekte zu definieren, damit das Attribut erreicht werden kann
Privat und methodienfrei.
Kopieren Sie den Code -Code wie folgt:
<script type = "text/javaScript">
Funktionsperson (Name, Alter) {
this.name = name;
this.age = Alter;
this.Array = new Array ("Koji", "luo");
}
Person.Prototype.showname = function () {
Alarm (this.name);
}
Person.Prototype.showarray = function () {
Alarm (this.array);
}
Var obj1 = neue Person ("Koji", 22);
var obj2 = neue Person ("luo", 21);
obj1.array.push ("kyo");
obj1.showarray ();
OBJ1.SHOWNAME ();
obj2.showarray ();
obj2.showname ();
</script>
Nachdem die Attribute privat sind, wirkt sich die Änderung ihrer jeweiligen Attribute nicht auf andere Objekte aus. Gleichzeitig wird die Methode auch von jedem Objekt gemeinsam genutzt. Semantisch,
Dies entspricht den Anforderungen der Face -Object -Programmierung.
Dynamischer Prototyp
Kopieren Sie den Code -Code wie folgt:
<script type = "text/javaScript">
Funktionsperson (Name, Alter) {
this.name = name;
this.age = Alter;
this.Array = new Array ("Koji", "luo");
// Wenn das im Personobjekt nicht definierte _initialisierte Personen nicht definiert ist, zeigt es an, dass es dem Prototyp der Person noch keine Methode hinzugefügt hat
ifof person._initialized == "untergesteckt"))
{{{{
Person.Prototype.showname = function () {
Alarm (this.name);
}
Person.Prototype.showarray = function () {
Alarm (this.array);
}
Person._Initialized = True;
}
}
Var obj1 = neue Person ("Koji", 22);
var obj2 = neue Person ("luo", 21);
obj1.array.push ("kyo");
obj1.showarray ();
OBJ1.SHOWNAME ();
obj2.showarray ();
obj2.showname ();
</script>
Diese Methode ähnelt dem Konstruktor/Prototyp. Geben Sie einfach die Methode in den Konstruktor ein, während gleichzeitig
Der Funktionsperson wird ein Attribut hinzugefügt, um sicherzustellen, dass die Anweisung nur einmal erfolgreich ausgeführt werden kann
Die am häufigsten verwendete in praktische Anwendungen ist die Konstruktor-/Prototypmethode. Die dynamische Prototypmethode ist ebenfalls sehr beliebt, sie verfügt über Funktionen und Struktur
Die Funktion/Prototyp -Methode ist äquivalent. Verwenden Sie die Konstruktor- oder Prototypmethode nicht allein.