Dieser Artikel beschreibt die erweiterten Merkmale der objektorientierten Programmierung in JavaScript. Teilen Sie es für Ihre Referenz wie folgt weiter:
1. Drei Möglichkeiten zum Erstellen von Objekten:
Die erste Baumethode: neues Objekt
var a = neues Objekt (); Ax = 1, ay = 2;
Die zweite Konstruktionsmethode: Objekt direkte Messung
var b = {x: 1, y: 2};Die dritte Baumethode: Typ Definieren Sie den Typ
Funktionspunkt (x, y) {this.x = x; this.y = y;} var p = neuer Punkt (1,2);2. Zugriff auf das Objekt
Zugriff auf die Eigenschaften des Objekts
Bracket Notation: Held ['Name']. Anwesend
Punktnotation: Hero.Name.
Wenn die zugegriffene Eigenschaft nicht vorhanden ist, wird undefined zurückgegeben.
Methoden zum Zugriff auf Objekte
Fügen Sie ein Paar Klammern nach dem Methodennamen hinzu: Hero.Say ().
Eine Zugriffsmethode wie Zugriffsattribut: Hero ['Say'] ().
1. Löschen Sie Attribute und Methoden
// Erstellen Sie ein leeres Objekt var Hero = {}; // Attribute und Methoden hinzufügen. Name = "JavaScript"; Hero.Value = "HelloWorld"; Hero.SayName = function () {return "hello" + heldenname;}; // Test Alarm (Hero.Name); // JavaScriptalert ausgeben (Hero.SayName ()); // Hello JavaScript ausgeben // das Name des Namens von Hero -Objekt löschen. // Ausgabe Hallo undefiniert4. Verwenden Sie diesen Wert
// Erstellen Sie ein leeres Objekt var Hero = {}; // Attribute und Methoden zum Heldenobjekthelden hinzufügen. // JavaScripttalet ausgeben (Hero.SayName ()); // Hello JavaScript ausgebenZusammenfassen:
① Dies bezieht sich hier tatsächlich auf "dieses Objekt" oder "aktuelles Objekt".
② Die Verwendung davon ist für die meisten Menschen ein Problem. Es wird also nicht empfohlen, zu viel zu verwenden!
5. Eingebaute Objekte
Eingebaute Objekte können grob in drei Gruppen unterteilt werden:
① Objekte der Datenverkapselungsklasse - einschließlich Objekt, Array, Boolesche, Nummer und String. Diese Objekte repräsentieren verschiedene Datentypen in JavaScript und haben alle ihre eigenen Typen -Return -Werte sowie undefinierte und Null -Zustände.
② Objekte der Werkzeugklasse - einschließlich Objekte, die zur Bereitstellung von Traverals wie Mathematik, Datum, Regexp usw. verwendet werden.
③ Fehlerklassenobjekte - einschließlich allgemeiner Fehlerobjekte und verschiedenen anderen speziellen Fehlerklassenobjekten. Sie können uns helfen, den Arbeitszustand des Programms zu korrigieren, wenn bestimmte Ausnahmen auftreten.
6.Object -Objekt
Objekt ist das übergeordnete Objekt aller Objekte in JavaScript, was bedeutet, dass alle Objekte aus dem Objektobjekt geerbt werden.
Erstellen Sie ein leeres Objekt:
var Object = {}; var obj = new Object ();7.Array -Objekt
Array -Objekte werden verwendet, um mehrere Werte in einer einzelnen Variablen zu speichern.
Erstellen Sie ein leeres Array -Objekt:
var Object = {}; var obj = new Array ();Zum Beispiel 1:
// Invert -String -Beispiel Beispiel // Definieren Sie eine String var str = "A, B, C, D, E, F, G"; // verwenden die methode split () des String -Objekts, um die Zeichenfolge in ein Array var arr = str.split (",") zu schneiden; // Verwenden Sie die Reverse () -Methode des Array -Objekts, um die Reihenfolge der Elemente im Array umzukehren. arr = arr.reverse (); // prüfen Druckalarm (arr.toString ());8. STRING -Objekt
Unterschiede zwischen String -Objekten und grundlegenden Zeichenfolgentypen:
var str = "Hallo"; var obj = new String ("Welt"); alert (typeof str); // typeof stringalert (typeof obj); // typof ObjektZum Beispiel 1:
// Beispiel für die Bestimmung, ob eine Zeichenfolge eine angegebene Zeichenfolge enthält // zwei Strings definieren, die beurteilt werden sollen var str = "abcdefg"; var substr = "efg";/** die Funktion zum Beurteilung eines Zeichens, ob eine Zeichenfolge eine angegebene Zeichenfolge enthält. String (str); // Abfangen das beurteilte String var result = string.substr (Str.Indexof (substr), substr.length);/** Bestimmen Sie, ob die abgefangene Zeichenfolge leer ist false;}} alert (sub (str, substr));
9. Prototyp
Die Funktion selbst ist auch ein Objekt, das Methoden und Eigenschaften enthält. Was wir nun studieren wollen, ist eine weitere Eigenschaft des Funktionsobjekts - Prototype.
Fügen Sie Methoden und Eigenschaften mit Prototypen hinzu
Schreiben Sie Prototyp -Eigenschaften mit eigenen Eigenschaften neu
Erweitern Sie integrierte Objekte
Fügen Sie Methoden und Eigenschaften mit Prototypen hinzu
Im Folgenden finden Sie ein neues Funktionsobjekt und stellen Sie einige Eigenschaften und Methoden fest:
Funktion Hero (Name, Farbe) {this.name = name; this.color = color; this.whatareyou = function () {return "Ich bin ein" + this.color + "" + this.name; }} var hero = neuer Hero ("javaScript", "rot"); alarm (helden.whatareyou ()); // Ausgabe Ich bin ein roter JavaScriptFügen Sie dem obigen Heldenfunktionsobjekt einige Eigenschaften und Methoden hinzu:
Hero.Prototype.Price = 100; Hero.Prototype.Rating = 3; Hero.Prototype.getInfo = function () {return "Bewertung:" + this.rating + ", Preis:" + this.price;} alert (Hero.getInfo ()); // Ausgangsbewertung: 3, Preis: 100Die obige Methode kann auch so durchgeführt werden:
Hero.Prototype = {Preis: 100, Bewertung: 3, getInfo: function () {return "Rating:" + this.rating + ", Preis:" + this.price; }};Schreiben Sie Prototyp -Eigenschaften mit eigenen Eigenschaften neu
Was soll ich tun, wenn die eigenen Attribute des Objekts dem Prototyp -Attribut übereinstimmen? Die Antwort ist, dass die eigenen Attribute des Objekts eine höhere Priorität haben als die Prototypattribute.
Funktion Hero () {this.name = "jscript";} Hero.Prototype.Name = "JavaScript"; var Hero = new Hero (); alert (Hero.Name); // Ausgabe jscriptDelete Hero.Name; alert (Hero.Name); // JavaScript ausgebenErweitern Sie integrierte Objekte
// Fügen Sie eine Funktion hinzu, um das Prototyp -Array -Objekt -Array zu beurteilen. }} return false;} // Definieren Sie ein Array -Objekt var a = ["rot", "grün", "blau"]; // testen Sie Alarm (A.inarray ("rot"); //Truealert(a.inarray("yellow ")); //FALSCH10. Vererbung
Wenn beide Klassen vom gleichen Instanztyp sind, gibt es einige Beziehungen zwischen ihnen. Wir nennen die verallgemeinerte Beziehung zwischen Arten derselben Instanz "Vererbung".
Die Vererbungsbeziehung enthält mindestens drei Bedeutungen:
① Fälle von Unterklassen können Methoden von Elternklassen austauschen.
② Unterklassen können die Methoden der Elternklasse überschreiben oder neue Methoden erweitern.
③ Unterklassen und übergeordnete Klassen sind beide "Typen" von Unterklasseninstanzen.
In JavaScript wird "Vererbung" nicht unterstützt. Das heißt, es gibt keine vererbte Syntax in JavaScript. In diesem Sinne ist JavaScript keine direkte objektorientierte Sprache.
11. Prototyp -Kette
Die Prototypkette ist die Standardvererbungsmethode, die vom ECMAScript -Standard formuliert wurde.
Zum Beispiel:
Funktion a () {this.name = "a"; this.toString = function () {return this.name};Erläuterung:
Das Objekt wird direkt in der Prototyp -Eigenschaft des B -Objekts erstellt und erweitert den ursprünglichen Prototyp dieser Objekte nicht.
Eine neue Entität wird durch New A () erstellt und dann verwendet, um den Prototyp des Objekts zu überschreiben.
JavaScript ist eine Sprache, die sich ausschließlich auf Objekte stützt, und es gibt kein Konzept der Klasse.
Daher ist es notwendig, eine Entität mit neuem A () direkt zu erstellen, bevor die relevanten Erbschaftsarbeiten durch die Eigenschaften der Entität abgeschlossen werden können.
Nach Abschluss einer solchen Implementierung der Erbschaft wirkt sich jede Änderung, Umschreibung oder Löschung von a () nicht aus B ().
Nur aus dem Prototyp geerbt:
Funktion a () {} a.prototype.name = "a"; A.Prototype.toString = function () {return this.name}; = 18; C.Prototype.getage = function () {return this.age};Vererbung zwischen Objekten (erweiterter Inhalt, kann nicht sein) (flache Kopie)
// Die Funktion akzeptiert ein Objekt und gibt seine Kopierfunktion ExtendCopy (p) {var z = {} zurück; // ein leeres Objekt z für (var i in p) {// var i = 0; i <p.length; i ++ z [i] = p [i]; // Wenn Sie als Array behandelt werden, können Sie verstehen} // Uber -Attribut: Verwenden Sie P als Elternteil von Z und Punkt Z zum Prototyp von p z.uber = p; Rückgabe z;} // Objekt A definieren, aber Objekt A ist kein Funktionsobjekt var a = {name: "a", tostr: function () {return this.name;}} // Objekt B definieren, aber Objekt B ist kein Funktionsobjekt var b = extendCopy (a); B.Name = "B"; b.toStr = function () {return this.uber.toStr () + "," + this.name;}; // Objekt C, aber Objekt C ist kein Funktionsobjekt var c = extendCopy (b); C.Name = 18; alert (c.tostr ()); // Ausgabe a, b, 18PS: Viele Codelayouts im Tutorial sind nicht standardisiert. Hier sind einige Tools für die Formatierung und Verschönerung von JavaScript -Code, die alle verwenden können:
JavaScript -Code -Formatierungs -Tool:
http://tools.vevb.com/code/js
JavaScript Code Verschönerung/Komprimierung/Formatierung/Verschlüsselungstools:
http://tools.vevb.com/code/jscompress
JSmin Online JS -Komprimierungstool:
http://tools.vevb.com/code/jsMincompress
For more information about JavaScript, please check this site's special topics: "Javascript object-oriented tutorial", "Summary of json operation skills in JavaScript", "Summary of JavaScript switching effects and techniques", "Summary of JavaScript search algorithm skills", "Summary of JavaScript animation special effects and techniques", "Summary of JavaScript errors and debugging skills", "Zusammenfassung von JavaScript -Datenstrukturen und Algorithmusfähigkeiten", Zusammenfassung der JavaScript -Traversalalgorithmen und -techniken "und" Zusammenfassung der Nutzung von JavaScript -Mathematikoperationen ""
Ich hoffe, dieser Artikel wird für JavaScript -Programme aller hilfreich sein.