Objektteil
Objekttyp
Objekt ist eine ungeordnete Sammlung, die Objekte jeglicher Art speichern kann, und alle anderen Objekte werden von diesem Objekt geerbt.
Es gibt zwei Arten der Objekterstellung, eine besteht darin, den neuen Bediener zu verwenden, und der andere ist eine wörtliche Notation.
1. Erstellen Sie ein Objekt mit dem neuen Bediener
var obj = new Object (); // Achten Sie auf die Kapitalisierung, Sie können es auch direkt als Objekt schreiben ()
Beachten Sie, dass das Generieren eines neuen Objekts über die neue Object () -Methode der wörtlichen Methode äquivalent ist.
2. Erstellen Sie mit der wörtlichen Methode:
var obj = {name: 'trigkit4', Alter: 21}; // Das Semikolon ist am besten hinzuzufügenWenn ein Objekt mit Literalen deklariert wird, wird der Objekt () -Konstruktor nicht aufgerufen (außer FF)
Object.Prototyp -Objekt
Alle Konstruktoren haben ein Prototypattribut, das auf ein Prototypobjekt verweist.
Object.Prototype.print = function () {console.log (this)}; var obj = new Object (); obj.print () // ObjektInstanz obj erbt direkt die Eigenschaften und Methoden des Objekts.Prototyps
1. Objekte sind nur spezielle Daten. Objekte haben Eigenschaften und Methoden. JavaScript ist eine objektorientierte Sprache, aber JavaScript verwendet keine Klassen. JavaScript basiert auf [Prototyp] [1], nicht klassenbasiert.
2. Attribut: Es ist eine Variable, die einem bestimmten Objekt angeschlossen ist. Methode: Es ist eine Funktion, die nur von einem bestimmten Objekt aufgerufen werden kann.
3.JS -Objekte sind eine Sammlung von Eigenschaften und Methoden. Eine Methode ist eine Funktion, die ein Mitglied eines Objekts ist. Ein Attribut ist ein Wert oder ein Satz von Werten (in Form eines Arrays oder Objekts), das ein Mitglied eines Objekts ist.
4.JS -Objekt basiert auf der Konstruktorfunktion. Wenn Sie die Konstruktorfunktion verwenden, um ein neues Objekt zu erstellen, kann gesagt werden, dass ein neues Objekt instanziiert wird. Eigenschaften sind Variablen innerhalb der Konstruktorfunktion.
Objekte, die mit Konstruktorfunktionen instanziiert wurden:
cat = new Animal ();
JavaScript ist eine objektbasierte Sprache, und fast alles, was Sie begegnen, ist ein Objekt. Es handelt sich jedoch nicht um eine echte objektorientierte Programmiersprache (OOP), da es in seiner Syntax keine Klasse (Klasse) gibt.
<script type = "text/javaScript"> // Objekt ist eine Sammlung von Namen/Wertpaaren var browser = {// Objekt ist Name ist in lockigen Klammern eingeschlossen: "Firefox", Kernel: "Gecko"};Objekte (OBJCT) sind eine Sammlung von Eigenschaften, jede Eigenschaft besteht aus "Namen/Wertpaaren". JS definiert auch ein spezielles Objekt - ein Array, bei dem es sich um eine bestellte Menge von nummerierten Werten handelt.
JS definiert auch ein spezielles Objekt - eine Funktion, eine Funktion ist ein Objekt mit ausführbarer Code zugeordnet. Es wird den Code ausgeführt, indem die Funktion aufgerufen und das Betriebsergebnis zurückgegeben wird.
Es gibt keine Klasse in JS, aber es benötigt einen neuen Namen "Prototype -Objekt", also "class == Prototype -Objekt", siehe: JavaScript -Klasse Schreibmethode (i).
2. Die Differenz und Verbindung zwischen Klassen (Prototypobjekte) und Objekten (Instanzen)
1. Klassen (Prototypobjekte) sind abstrakt, konzeptionell und repräsentieren eine Art von Dingen.
2. Das Objekt ist konkret, praktisch und repräsentiert eine bestimmte Sache.
3. Klasse (Prototyp -Objekt) ist eine Vorlage für Objektinstanzen, und Objektinstanzen sind Individuen der Klasse.
Ein häufiges Missverständnis ist, dass der wörtliche Wert einer Zahl kein Objekt ist. Dies liegt an einem Fehler im JavaScript -Parser, der versucht, den Punktoperator als Teil des numerischen Nennwerts des schwimmenden Punktes zu analysieren.
Es gibt viele Problemumgehungen, um den wörtlichen Wert einer Zahl wie ein Objekt aussehen zu lassen.
2..tostring (); // Der zweite Punkt kann normal analysiert werden
2.ToString (); // achten Sie auf die Räume vor dem Punkt
(2) .ToString (); // 2 wird zuerst berechnet
Attribute löschen
Die einzige Möglichkeit, eine Eigenschaft zu löschen, besteht darin, den Löschbetreiber zu verwenden. Wenn Sie die Eigenschaft auf undefinierte oder NULL einstellen, löscht die Eigenschaft nicht wirklich, sondern beseitigt einfach die Assoziation zwischen der Eigenschaft und dem Wert.
Drei Hauptmerkmale von JavaScript-objektorientiertem JavaScript
Einkapselung: Es wird keine interne Implementierung berücksichtigt, nur die funktionale Verwendung wird berücksichtigt
Vererbung: Erben Sie ein neues Objekt aus einem vorhandenen Objekt
Polymorphismus: Der sogenannte Polymorphismus bezieht sich auf mehrere Zustände, die sich in verschiedenen Situationen beziehen.
1. Verpackung
Einkapselung bedeutet, die Gemeinsamkeiten (einschließlich Attribute und Verhaltensweisen) von Dingen zu gruppieren, die zur gleichen Kategorie in eine Klasse gehören, um sie einfach zu verwenden. Zum Beispiel kann das menschliche Ding auf folgende Arten eingekapselt werden:
Menschen{
Alter (Attribut 1)
Höhe (Attribut 2)
Geschlecht (Attribut drei)
Dinge tun (eines der Verhaltensweisen)
Gehen (Verhalten 2)
Sprechen (Akt 3)
}
Vorteile der Kapselung:
Die Kapselung schützt die Integrität interner Daten;
Die Kapselung erleichtert die Wiederbelebung von Objekten.
Schwächen Sie die Kopplung zwischen Modulen und verbessern Sie die Wiederverwendbarkeit von Objekten;
Hilft, Namespace -Konflikte zu vermeiden.
Siehe das folgende Beispiel:
<script type = "text/javaScript"> var boy = {}; // Erstellen Sie einen leeren Objekt Boy.name = "Xiao ming"; // jungen zuweisen.age = 12 gemäß den Eigenschaften des Prototyp -Objekts, var girl = {}; Mädchen.Name = "Xiaohong"; Mädchen.age = 10; </script>Dies ist die einfachste Kapselung, die zwei Attribute in einem Objekt zusammenfasst. Diese Schreibmethode hat jedoch zwei Nachteile. Eine davon ist, dass es sehr problematisch sein wird, wenn Sie mehr Instanzen generieren. Das andere ist, dass es keine Möglichkeit gibt, zu sagen, ob zwischen der Instanz und dem Prototyp eine Verbindung besteht.
Konstruktormodus
Um das Problem der Erzeugung von Instanzen aus Prototypobjekten zu lösen, liefert JavaScript ein Konstruktormuster.
Der sogenannte "Konstruktor" ist tatsächlich eine gewöhnliche Funktion, diese Variable wird jedoch intern verwendet. Die Verwendung des neuen Operators für den Konstruktor kann eine Instanz generieren, und diese Variable wird an das Instanzobjekt gebunden.
Zum Beispiel können die Prototypobjekte von Jungen und Mädchen jetzt so geschrieben werden:
<script type = "text/javaScript"> Funktionsperson (Name, Alter) {this.name = name; this.age = Alter; } </script>Wir können jetzt Instanzobjekte generieren.
<script type = "text/javaScript"> var boy = new Person ("xiao ming", 12); var girl = neue Person ("Xiao Hong", 10); Alert (Boy.Name); // xiao ming alarm (boy.age); // 12 </script>Zu diesem Zeitpunkt enthalten Jungen und Mädchen automatisch ein Konstruktorattribut, das auf seinen Konstruktor verweist.
Alert (Boy.Constructor == Person); //WAHR
Alarm (Mädchen.Constructor); // Versuchen Sie es selbst aus
Das Prototyp -Muster JavaScript stipuliert, dass jeder Konstruktor ein Prototypattribut auf ein anderes Objekt hat. Alle Eigenschaften und Methoden dieses Objekts werden durch Instanzen des Konstruktors vererbt.
Dies bedeutet, dass wir diese unveränderten Eigenschaften und Methoden im Prototypobjekt direkt definieren können.
<script type = "text/javaScript"> Funktionsperson (Name, Alter) {this.name = name; this.age = Age;} Person.Protype.Type = "Human"; Person.Protype.eat = function () {alert ("it rice");} </script>Generieren Sie dann die Instanz:
<skript type = "text/javaScript"> var boy = new Person ("xiao ming", "12"); var girl = new Person ("xiao hong", "10"); alert (boy.type); // Human boy.eat (); // Eat </script>Zu diesem Zeitpunkt sind die Typ -Attribute und Eat () -Methoden aller Instanzen tatsächlich dieselbe Speicheradresse, was auf das Prototyp -Objekt hinweist und so die Betriebseffizienz verbessert.
alarm (boy.eat == Mädchen.eat); //WAHR
Eine Prototyp-Eigenschaft ist eine integrierte Eigenschaft, die die Konstruktorfunktion angibt, die das Objekt erweitert.
Der folgende Code fügt der Tierkonstruktor -Funktion eine neue Attributgröße hinzu, die das Prototyp -Attribut des CAT -Objekts ist. Durch die Verwendung von Prototypeigenschaften können alle Objekte, die Tierkonstruktorfunktionen erweitern, auf die Eigenschaft der Größe zugreifen
Cat = New Animal ("Katzen", "miow", "Walk/Run"); Cat.Prototype.size = "Fat";In diesem Fall ist das Größenattribut aller tierischen Objekte "Fett". Der Prototyp stand zu einer neuen Instanz des Objekts. Da es sich immer noch um ein Objekt handelt, können dem Objekt neue Attribute hinzugefügt werden. Genau wie Style ein Objekt in JavaScript, können Sie auch weiterhin Eigenschaften nach dem Stil hinzufügen.
<script type = "text/javaScript">/*Definieren Sie eine Personklasse*/Funktion Person (_name, _age, _SALARY) {// Das öffentliche Attribut der Personklasse ist das öffentliche Attribut der Klasse definiert als: "this.Property name" this.name = _name; // Das private Attribut der Personklasse, das private Attribut der Klasse, ist definiert als: "VAR -Attributname" var age = _age; var salary = _Salary; // Definieren Sie die öffentliche Methode (privilegierte Methode) der Personklasse, die öffentliche Methode der Klasse ist definiert als: "this.functionName = function () {.....}" this.show = function () {alert ("Alter ="+Alter+"/t"+"salary ="+.Wenn ein Objekt nach einer bestimmten Eigenschaft sucht, durchquert es zunächst seine eigenen Eigenschaften. Wenn nicht, wird weiterhin nach dem von [[Prototyp]] verwiesenen Objekt suchen. Wenn nicht, wird weiterhin nach dem Objekt suchen, auf das [[[Prototyp]] bezeichnet wird. [[Prototyp]] und so weiter, bis [[Prototyp]].
Einfach ausgedrückt wird ein Verweis auf ein anderes Objekt über den [[Prototyp]] des Objekts speichern und die Attribute durch diese Referenz durchsucht. Dies ist die Prototypkette.
NULL -Objekt
Die Funktion von JS zugewiesene Nullwerte an Variablen lautet:
Durch das Zuweisen eines Nullzeigers ist es leicht zu verstehen, dass diese Variable darauf vorbereitet ist, Objekte zu speichern. Es ist auch bequem, die falsche Einstellung anzupassen
Globales Fensterobjekt
Jede globale Funktion oder Variable in JavaScript ist eine Eigenschaft des Fensters.
Das Selbstobjekt ist genau das gleiche wie das Fensterobjekt. Selbst wird normalerweise verwendet, um zu bestätigen, dass es in der aktuellen Form ist.
Die Hauptziele des Fensters sind wie folgt:
JavaScript -Dokumentobjekt
JavaScript Frames -Objekt
JavaScript -Verlaufsobjekt
JavaScript -Standortobjekt
JavaScript Navigator -Objekt
JavaScript -Bildschirmobjekt
Mehrere gemeinsame Methoden
valueOf () Methode: Gibt den ursprünglichen Wert des angegebenen Objekts zurück
Die methode split () spaltet die Zeichenfolge in ein String -Array und gibt dieses Array zurück.
Die Indexof () -Methode gibt das erste Auftreten eines angegebenen String -Werts in der Zeichenfolge zurück.
Die Substring () -Methode wird verwendet, um Zeichen in einer Zeichenfolge zwischen zwei angegebenen Indexs zu extrahieren.
Die Substr () -Methode extrahiert die angegebene Anzahl von Zeichenfolgen, die aus der Startpos -Position aus der Zeichenfolge beginnen.
Die join () -Methode wird verwendet, um alle Elemente in das Array in eine Zeichenfolge zu stecken.
ArrayObject.join (Trennzeichen)
Die Reverse () -Methode wird verwendet, um die Reihenfolge der Elemente in einem Array umzukehren.
Die Methode Slice () gibt das ausgewählte Element aus einem vorhandenen Array zurück.
Objekt wörtlich
Objektliterale sind Prozesse, mit denen eine große Anzahl von Eigenschaften erstellt wird, wie folgt:
<script type = "text/javaScript"> var company = {name: "microsoft", Alter: 39, Mitarbeiter: 99000, CEO: "Nadella"}; </script>Hier sollte beachtet werden, dass Attribute und Attributwerte von Colons (:) getrennt werden; Mehrere Attribute werden durch Kommas (,) getrennt. Das wörtliche Objekt kann auch Methoden definieren. Schreiben Sie einfach die Funktion auf die Attribute dieses Objekts. Dies ist eine anonyme Funktion. Sie müssen nur seinen Methodennamen () schreiben, um ihn anzurufen.
<script type = "text/javaScript"> var hunde = {name: "husky", Alter: 2, run: function () {return "123";}} alert (Dog.run ()); // Wenn Sie Dog.run eingebenGrundwert -Wrapper
In JS gibt es fünf Grundwerttypen: Nummer, String, Boolean, Null und Undefined. Mit Ausnahme von Null und Undefined haben die anderen drei sogenannte grundlegende Verpackungsobjekte. Die integrierten Konstruktoren Nummer (), String () und Boolean () können zum Erstellen von Wrapper-Objekten verwendet werden.
var num = neue Nummer (10); console.log (typeof num); // Object Object () Method Object () // Geben Sie ein leeres Objekt zurück (undefiniert) // ein leeres Objekt Objekt zurückgeben (null) // ein leeres Objekt eingeben (1) // Äquivalent zu neuem Nummer (1) Objekt ('foo') Objekt (True). Boolean (True) Object ([]) // Geben Sie das ursprüngliche Array -Objekt zurück ({}) // das ursprüngliche Objekt zurückgeben (Funktion () {}) // Die ursprüngliche Funktion zurückgebenArray -Teil
1.Array -Objekt
Array -Objekt: Bietet Unterstützung beim Erstellen von Arrays eines beliebigen Datentyps.
ArrayOBJ = New Array ()
ArrayOBJ = New Array ([Größe])
ArrayOBJ = New Array ([Element0 [, Element1 [, ... [, Elementn]]]]])
Definition: var arr = [2,3,45,6]; var arr = New Array (2,4,5,7)
Es gibt keinen Unterschied in der Definition zwischen den beiden, [] hat eine hohe Leistung, da der Code kurz ist.
Verwenden Sie Array- und Objektliterale: var atest = []; Beim Erstellen von Arrays ist die Verwendung von Array -Literalen eine gute Wahl. In ähnlicher Weise können Objektliterale auch verwendet werden, um Platz zu sparen. Die folgenden zwei Zeilen sind gleich, aber verwenden Sie die Objektliterale, um kürzer zu sein:
var otest = neues Objekt; // versuchen, var otest = {} nicht zu verwenden; // die beste Wahl oder var 0test = [];Traversal Um die beste Leistung von Traversen -Arrays zu erzielen, wird empfohlen, einen Klassiker für die Loop zu verwenden.
var list = [1, 2, 3, 4, 5, ...... 100000000]; für (var i = 0, l = list.length; i <l; i ++) {console.log (liste [i]);}Der obige Code verfügt über eine Verarbeitung, die die Länge des Arrays durch l = list.length untergräbt.
Array -Konstruktor
Da der Konstruktor von Array bei der Umgang mit Argumenten etwas mehrdeutig ist, wird immer empfohlen, die wörtliche Syntax von Arrays [] - zu verwenden, um Arrays zu erstellen.
Daher ist der folgende Code verwirrend:
Neuarray (3, 4, 5); // Ergebnis: [3, 4, 5]
Neuarray (3) // Ergebnis: [] Die Länge dieses Arrays beträgt 3
Versuchen Sie, Array -Konstruktoren zum Erstellen von Neuarrays zu vermeiden. Es wird empfohlen, die wörtliche Syntax von Arrays zu verwenden. Sie sind kürzer und prägnanter, wodurch die Lesbarkeit des Codes erhöht wird.
Eigenschaften des Array -Arrays
Drei Eigenschaften des Array -Array -Attributs: Längenattribut, Prototypattribut, Konstruktorattribut
1. Längenattribut
Das Längenattribut repräsentiert die Länge des Arrays, dh die Anzahl der Elemente darin. Da der Index eines Arrays immer von 0 beginnt, betragen die oberen und unteren Grenzen eines Arrays: 0 bzw. Länge-1. Im Gegensatz zu den meisten anderen Sprachen ist die Länge Eigenschaft von JavaScript -Arrays veränderlich, was besondere Aufmerksamkeit erfordert.
2.Prototyp -Attribut
Gibt einen Verweis auf den Objekttyp -Prototyp zurück. Das Prototyp -Attribut ist dem Objekt gemeinsam.
Verwenden Sie für Array -Array -Objekte das folgende Beispiel, um den Zweck des Prototyp -Attributs zu veranschaulichen.
Fügen Sie dem Array -Objekt eine Methode hinzu, um den maximalen Elementwert im Array zurückzugeben. Deklarieren Sie dazu eine Funktion, fügen Sie sie zu Array.Prototype hinzu und verwenden Sie sie.
Funktion array_max () {var i, max = this [0]; für (i = 1; i <this.Length; i ++) {if (max <this [i]) max = this [i]; } return max; } Array.prototype.max = array_max; var x = Neuarray (1,2,3,4,5,6); var y = x.max ();Nachdem dieser Code ausgeführt wurde, speichert Y den Maximalwert im Array X oder 6.
3.Constructor -Attribut
Eine Funktion, die die Erstellung eines Objekts darstellt. Beschreibung: Das Konstruktorattribut ist ein Mitglied aller Objekte mit Prototyp. Dazu gehören alle jscript -nativen Objekte mit Ausnahme von globalen und mathematischen Objekten. Die Konstruktoreigenschaft enthält einen Verweis auf die Funktion, die eine bestimmte Objektinstanz erstellt.
Zum Beispiel:
x = neuer String ("hi"); if (x.constructor == string) // prozess (Bedingung ist wahr). // oder Funktion myfunc {// func. } y = neuer myfunc;if (y.constructor == myfunc) // prozess (Bedingung ist wahr).
Für Arrays:
y = new Array ();
Array -Objektmethode
Sort () Methode
Grammatik
ArrayObject.sort (Sortby)
Sortby optional. Geben Sie die Sortierreihenfolge an. Muss eine Funktion sein.
var arr = [11,2,28,4,5,1];
console.log (arr.sort ()); // return [1, 11, 2, 28, 4, 5]
Warum sind die 11 und 28 hier nicht in Ordnung angeordnet? Dies liegt daran, dass die Sortierung ohne Parameter in Zeichencodierungsreihenfolge sortiert ist.
Was ist, wenn wir die Array -Elemente von klein bis groß sortieren wollen? Schauen Sie sich den folgenden Code an:
var arr = [11,2,28,4,5,1]; console.log (arr.sort (Funktion (a, b) {return ab; // return [1, 2, 4, 5, 11, 28]});Wenn Sie nach anderen Kriterien sortieren möchten, müssen Sie eine Vergleichsfunktion bereitstellen, die zwei Werte vergleicht, und gibt dann eine Zahl zurück, die die relative Reihenfolge der beiden Werte veranschaulicht. Die Vergleichsfunktion sollte zwei Parameter A und B haben, und ihr Rückgabewert lautet wie folgt:
Wenn a weniger als B ist, sollte A vor B in dem sortierten Array erscheinen, dann wird ein Wert von weniger als 0 zurückgegeben.
Wenn a gleich B ist, kehren Sie 0 zurück.
Wenn a größer als B ist, wird ein Wert von mehr als 0 zurückgegeben.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.