1. Übersicht
In der Java -Sprache können wir unsere eigenen Klassen definieren und Objekte basierend auf diesen Klassen für die Verwendung erstellen. In JavaScript können wir auch unsere eigenen Klassen definieren, z. B. die Definition von Benutzerklassen, Hashtable -Klasse usw.
Derzeit gibt es in JavaScript einige Standardklassen wie Datum, Array, Regexp, String, Mathematik, Nummer usw., die uns viele Annehmlichkeiten für die Programmierung bieten. Für komplexe Kundenprogramme sind diese jedoch alles andere als genug.
Im Gegensatz zu Java bietet Java2 uns viele Standardklassen, die im Grunde unseren Programmieranforderungen entsprechen. JavaScript bietet jedoch nur wenige Standardklassen, und viele Programmieranforderungen müssen von uns selbst implementiert werden. Beispielsweise hat JavaScript keine Hashtable -Tabelle, die bei den wichtigsten Werten unpraktisch ist.
Daher denke ich persönlich, dass eine vollständige JavaScript -Objektansicht wie folgt sein sollte:
2. Grundlegende Konzepte
1. Passen Sie das Objekt an.
Gemäß dem Objekterweiterungsmechanismus von JS können Benutzer JS -Objekte anpassen, die der Java -Sprache ähnlich sind.
Entsprechend benutzerdefinierte Objekte sind JS -Standardobjekte wie Datum, Array, Mathematik usw.
2. Prototyp
In JS ist dies eine Möglichkeit, Objekteigenschaften und -methoden zu erstellen. Durch Prototyp können Sie Objekten neue Eigenschaften und Methoden hinzufügen.
Mit Prototyp können wir JS -Standardobjekten neue Eigenschaften und Methoden hinzufügen. Zum Beispiel können wir für String -Objekte eine neue Methode TRIM () hinzuzufügen.
Im Gegensatz zu strengen Programmiersprachen wie Java können wir JS -Objekten während der Laufzeit dynamisch neue Eigenschaften hinzufügen.
Drei, Grammatikregeln
1. Methode zur Erstellung von Objekten
1) Objektinitializer -Methode
Format: ObjectName = {Property1: Value1, Property2: Value2,…, PropertyN: Valuen}
Eigenschaft ist die Eigenschaft eines Objekts
Wert ist der Wert des Objekts, und der Wert kann einer von einer Zeichenfolge, einer Zahl oder einem Objekt sein
Zum Beispiel: var user = {name: "user1", Alter: 18};
var user = {name: "user1", Job: {Gehalt: 3000, Titel: Programmierer}
Methoden, die auch auf diese Weise initialisiert werden können, zum Beispiel:
var user = {name: "user1", Alter: 18, getName: function () {return this.name; }}Das Folgende wird mit dem Fokus der Konstruktormethode, einschließlich der Definition von Attributen und Methoden, erklärt und auch unter Bezugnahme auf die Konstruktormethode erklärt.
2) Konstruktionsmethode
Schreiben Sie einen Konstruktor und erstellen Sie ein Objekt über eine neue Methode. Der Konstruktor hätte Konstruktorparameter tragen können
Zum Beispiel:
Funktion Benutzer (Name, Alter) {this.name = name; this.age = Alter; this.canfly = false; } var use = new user ();2. Definieren Sie Objekteigenschaften
1) In JS können drei Arten von Eigenschaften für Objekte definiert werden: private Eigenschaften, Instanzeigenschaften und Klasseneigenschaften. Ähnlich wie bei Java können private Eigenschaften nur in Objekten verwendet werden. Instanzeigenschaften müssen über die Instanz des Objekts verwiesen werden, und Klasseneigenschaften können direkt über den Klassennamen referenziert werden.
2) Private Attributdefinition
Private Attribute können nur im Konstruktor definiert und verwendet werden.
Syntaxformat: var PropertyName = Wert;
Zum Beispiel:
Funktion user (Alter) {this.age = Alter; var ischild = Alter <12; this.islittlechild = ischild; } var user = neuer Benutzer (15); Alert (user.Illittlechild); // Die richtige Art Alarm (user.ishild); // Der Fehler: Das Objekt unterstützt diese Eigenschaft oder Methode nicht3) Es gibt auch zwei Möglichkeiten, Instanzattribute zu definieren:
Prototypmethode, Syntaxformat: FunktionName.Prototype.propertyName = Wert
Diese Methode, Syntaxformat: this.propertyName = Wert, achten Sie auf den Ort, den in den folgenden Beispielen verwendet wird
Der obige Wert kann die Zeichenerstellung, die Anzahl und das Objekt sein.
Zum Beispiel:
Funktion user () {} user.Prototype.name = "user1"; User.Prototype.age = 18; var user = new user (); alert (user.age); »~ Up ~ - ~ up3) Klassenattributdefinition
Syntaxformat: FunktionName.PropertyName = Wert
Zum Beispiel:
Funktion user () {} user.max_age = 200; User.min_age = 0; alert (user.max_age);Siehe die Klasseneigenschaften von JS -Standardobjekten:
Number.max_value // maximaler numerischer Wert math.pi // pi
4) Zusätzlich zu den formaleren Methoden gibt es auch eine ganz besondere Möglichkeit, Attribute zu definieren, Syntaxformat: OBJ [Index] = Wert
Beispiel:
Funktion Benutzer (Name) {this.name = name; this.age = 18; this [1] = "ok"; dieses [200] = "Jahr"; } var user = new user ("user1"); Alert (Benutzer [1]);Im obigen Beispiel ist es wichtig zu beachten, dass das Altersattribut weder durch diese [1] erhalten wird, noch kann dies [0] durch diese [0] erhalten werden. Das vom Index definierte Index muss mit dem Indexmodus und nicht im Indexmodus definiert werden und auf normale Weise referenziert werden.
3. Definieren Sie die Objektmethode
1) Es gibt drei Arten von Methoden, die für Objekte in JS definiert werden können: private Methoden, Instanzmethoden und Klassenmethoden, ähnlich wie Java:
Private Methoden können nur in Objekten verwendet werden
Instanzmethoden müssen instanziiert werden, bevor sie verwendet werden können
Klassenmethoden können direkt über Klassennamen verwendet werden
Hinweis: Die Definition der Methode kann nicht über die oben erwähnte Indexmethode durchgeführt werden.
2) Private Methoden definieren
Private Methoden müssen im Konstruktorkörper definiert werden und können nur im Konstruktorkörper verwendet werden.
Syntaxformat: FunktionsmethodeName (arg1,…, argn) {}
Zum Beispiel:
Funktion Benutzer (Name) {this.name = name; Funktion getNamelength (namestr) {return namestr.Length; } this.namelength = getNamelength (this.name); }3) Definieren Sie eine Instanzmethode, derzeit können zwei Methoden verwendet werden:
Prototyp -Methode, die außerhalb des Konstruktors, Syntaxformat, verwendet wird:
FunktionName.Prototype.Methodname = Methode;
oder
FunktionName.Prototype.Methodname = Funktion (arg1,…, argn) {};
Diese Methode, die im Konstruktor, Syntaxformat, verwendet wird:
this.methodname = Methode;
oder
this.methodname = function (arg1,…, argn) {};
In der obigen Syntaxbeschreibung ist die Methode eine Methode, die bereits außerhalb existiert. Die Methode des Objekts, die mit MethodName definiert werden soll, bedeutet, dass eine externe Methode einer Methode des Objekts direkt zugewiesen wird.
Das Definieren der Objektmethode in der Form der Funktion (arg1,…, argn) {} sollten Entwickler beherrschen.
Einige Beispiele für die Definition einer Instanzmethode: Beispiel 1
Funktion Benutzer (Name) {this.name = name; this.getName = getUnername; this.setname = setUnername; } function getusername () {return this.name; } Function setUnername (name) {this.name = name; }Einige Beispiele für die Definition einer Instanzmethode: Beispiel 2
Funktion Benutzer (Name) {this.name = name; this.getName = function () {return this.name; }; this.setName = function (newname) {this.name = newname; }; }Einige Beispiele für die Definition einer Instanzmethode: Beispiel 3
Funktion Benutzer (Name) {this.name = name; } User.Prototype.getName = getUnername; User.Prototype.setname = setUnername (); Funktion getUnername () {return this.name; } Function setUnername (name) {this.name = name; }Einige Beispiele für die Definition einer Instanzmethode: Beispiel 4
Funktion Benutzer (Name) {this.name = name; } User.Prototype.getName = function () {return this.name; }; User.Prototype.setname = function (newname) {this.name = newName; };4) Klassenmethoden definieren
Klassenmethoden müssen außerhalb des Konstruktors definiert werden und können direkt mit dem Konstruktoramen verwiesen werden.
Syntaxformat:
FunktionName.MethodName = Methode;
oder
FunktionName.methodname = Funktion (arg1,…, argn) {};
Beispiel:
Funktion Benutzer (Name) {this.name = name; } User.getMaxage = getUsMaxage; Funktion getUserMaxage () {return 200; }oder
User.getMaxage = function () {return 200;};
alert (user.getMaxage ());
4. Referenzen von Eigenschaften und Methoden
1) Aus Sicht der Sichtbarkeit:
Private Eigenschaften und Methoden können nur im Objekt referenziert werden.
Instanzeigenschaften und Methoden können überall verwendet werden, müssen jedoch von Objekten verwiesen werden.
Klasseneigenschaften und Methoden können überall verwendet werden, können jedoch nicht durch eine Instanz eines Objekts verwiesen werden (dies unterscheidet sich von Java, in dem auf statische Mitglieder durch eine Instanz zugegriffen werden können).
2) Aus der Objektebene:
Ähnlich wie bei Java -Bohnen können tiefe Referenzen gemacht werden.
Verschiedene Arten:
Einfache Eigenschaft: Obj.PropertyName
Objekteigenschaften: Obj.innerobj.propertyName
Indexeigenschaft: Obj.PropertyName [Index]
Für tiefere Referenzen, ähnlich wie oben.
3) Aus der Definitionsmethode:
Die durch die Indexmethode definierten Attribute müssen über die Indexmethode referenziert werden.
Attribute, die durch Nicht-Index-Methoden definiert sind, müssen auf normale Weise referenziert werden.
Hinweis: Die Methode des Objekts kann nicht über die Indexmethode definiert werden.
5. Dynamische Addition und Löschung von Eigenschaften und Methoden
1) Für ein sofortiges Objekt können wir seine Eigenschaften und Methoden dynamisch hinzufügen und löschen. Die Syntax ist wie folgt (vorausgesetzt, die Objektinstanz ist OBJ):
Dynamisch Objekteigenschaften erhöhen
obj.newpropertyName = Wert;
Dynamisch die Objektmethode erhöhen
obj.newmethodname = methode oder = function (arg1,…, argn) {}
Dynamisch Objekteigenschaften löschen
Obj.PropertyName löschen
Dynamisch Löschen der Objektmethode
obj.methodname löschen
2) Beispiel:
Funktion Benutzer (Name) {this.name = name; this.age = 18; } var user = new user ("user1"); user.sister = "susan"; Alert (user.sister); // Durch Löschen von user.sister rennen; alert (user.sister); // Berichtsfehler: Das Objekt unterstützt diese Eigenschaft nicht. alert (user.getMothername ()); // Berichtsfehler: Das Objekt unterstützt diese Methode nichtVier, Zusammenfassung
1. Der benutzerdefinierte Objektmechanismus ist einer der attraktivsten Mechanismen für JS. Dies ist einfach großartig für C ++ - und Java -Programmierer!
2. Es gibt zwei Möglichkeiten, ein Objekt zu erstellen: Objektinitialisierer und Konstruktor.
3.. Objekteigenschaften und -methoden, Einschränkungen mit Sichtbarkeit sowie Attribute und Methoden mit unterschiedlicher Sichtbarkeit werden unterschiedlich definiert.
Der obige Artikel basiert auf JS -Objekten, Betriebsattributen und Methoden, die alle Inhalte sind, die ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.