Ursache
Ich habe an diesem Tag Prototype.js verwendet, also habe ich es geöffnet, um zu sehen, dass ich ein paar Zeilen und neblig gesehen habe.
Propotype.js Code -Fragment
Der Code ist wie folgt:
var class = {
Erstellen: function () {
Return function () {
this.initialize.apply (this, Argumente);
}
}
}
// Die Verwendung der Klassenverwendung ist wie folgt
var a = class.create ();
A. prototype = {
initialisieren: Funktion (v) {
Dieser Wert = V;
}
showValue: function () {
Alarm (this.Value);
}
}
var a = new a ('Helloord!');
a.
L initialisieren?
Was macht die L -Anwendung Methode?
L Argumente variabel?
l Warum wird die Initialisierungsmethode nach neuem A ausgeführt?
Finden Sie die Antwort:
Zweitens JS Targeting -Objekt
Was ist initialisieren?
Es ist nur eine Variable, die eine Methode darstellt, und die Verwendung ist der Konstruktor der Klasse.
Die spezifische Funktion wird von JS unterstützt. Was ist also das Objekt von JS? Was unterscheidet sich das gleiche und unterscheidet sich von Java?
Schauen Sie sich den Code an:
Der Code ist wie folgt:
Kopieren Sie den Code -Code wie folgt:
var className = function (v) {{{{{{
this.Value = v;
this.getValue = function () {
Kehre diesen Wert zurück;
}
this.setValue = function (v) {
this.Value = v;
}
}
Was ist der Unterschied zwischen den Funktionen und Klassen in JS?
Tatsächlich ist es der gleiche.
wie
Der Code ist wie folgt:
Var ObjectName1 = neuer Klassenname ("a");
Unter ihnen ist ObjectName1 ein Objekt, das nach der Ausführung des Klassennamenkonstruktors erhalten wurde. Dies bezieht sich in der Klassenname -Funktion auf das nach dem neue konstruierte Objekt, sodass ObjectName1 nach dem Folgenden ein Attribut und zwei Methoden hat. Sie können sie durch das rufen:
Der Code ist wie folgt:
ObjectName1.SetValue ('' Hallo '');
Alert (ObjectName1.getValue ());
ALERT (ObjectName1.Value);
Also
Der Code ist wie folgt:
var ObjectName2 = ClassName ("B");
Was bekommt ObjectName2? Offensichtlich wird der Rückgabewert der Methode, hier der KlasseName nur als gewöhnliche Funktion verwendet (obwohl der erste Buchstaben aktiviert ist). Aber im vorherigen Klassennamen gibt es keinen Rückgabewert, also wird ObjectName2 undwesend, wer "B" gibt? Hier gibt es kein Objekt, aber nur diese Methode durchzuführen, so dass dieses "B" dem Objektfenster zugewiesen wird, das diese Methode aufruft.
var ObjectName2 = ClassName ("B");
ALERT (Fenster.Value);
Alle Funktionen in JS sind also gleich, aber die Verwendung kann unterschiedlich sein (zum Aufbau von Objekten oder zur Ausführung eines Prozesses).
Kehren wir zum Thema zurück, was die Initialize tut?
Der Code ist wie folgt:
Kopieren Sie den Code -Code wie folgt:
var class = {
Erstellen: function () {
Return function () {
this.initialize.apply (this, Argumente);
}
}
}
var a = class.create ();
Dieser Code soll eine Funktionskopie auf a konstruieren, diese Funktion ist
Der Code ist wie folgt:
Kopieren Sie den Code -Code wie folgt:
Function () {
this.initialize.apply (this, Argumente);
}
Und die letztere Methode wird verwendet, um einen Konstruktor zu erstellen. Bei der Verwendung dieses Konstruktors zum Konstruktion eines Objekts lässt die Initial () -Methode der initialialisierenden Variablen des Konstruktors die Anwendung () -Methode ausgeführt. Auf diese Weise wird es bei initialisierten Objekten kontaktiert (wie Sie sich an die Anwendung wenden).
Also
Der Code ist wie folgt:
Kopieren Sie den Code -Code wie folgt:
A.Prototype = {
initialisieren: Funktion (v) {
Dieser Wert = V;
}
showValue: function () {
Alarm (this.Value);
}
}
Was bedeutet es?
Prototyp bedeutet "Prototyp". A ist eine Funktion (), dann ist A. Prototyp eine Variable in der Funktion, die tatsächlich ein Objekt ist. Welche Methode hat dieses Objekt? Welche Methode hat das von der Funktion generierte Objekt?
var a = new a ('Helloord!');
a.
Daher hat das A -Objekt auch eine Initialisierungsmethode. ') Initialize ging zurück, um die Antragsmethode aufzurufen. Dies ist die Methode zum Aufrufen einer Initialisierung.
3. Call () und bewerben Sie sich ()
Lassen Sie sich mit dem Studieren von Application () online studieren und Ihre eigenen Forschungsergebnisse kombinieren, um die Funktionen von Call () () und zu bewerben () zu verstehen.功能基本一样 , function (). Call (Objekt, {}, {} ……) 或者 function (). Anwenden (Objekt, [……]) 的功能就是对象 Objekt 调用这里的 funciton () , 不同之处是Der Anrufparameter wird vom zweiten an Funciton übergeben. Apply hat nur zwei Parameter, und das zweite ist ein Array, das alle an Funktionen übergebenen Parameter speichert.
this.initialize.apply (this, Argumente);
Was bedeutet es?
Das erste, das hier hier ist, auf das Objekt bezieht, das nach dem Aufrufen des Konstruktors mit einem neuen Anruf erzeugt wird, der vorherige A ist, dann sollte dies natürlich das zweite auf dasselbe Objekt beziehen. Dann ist dieser Satz (dh a) die Initialisierungsmethode aufzurufen, und der Parameter ist ein Argumenteobjekt (die Anzahl des Arrays der Parameter).
Wie kann ich also die Parameter der Initialisierungsmethode übergeben?
Viertens, Argumente Objekt
Dieser Code kann alles erklären:
Der Code ist wie folgt:
Kopieren Sie den Code -Code wie folgt:
Funktionstest () {
Alarm (typeof argumente);
für (var i = 0; i <argumente.length; i ++) {
Alarm (Argumente [i]);
}
}
test ("1", "2", "3");
test ("a", "b");
Nach der Ausführung ist Warnmeldung (Typof Argumente) angezeigt. Dann spielen Sie 1, 2 und 3 nacheinander. Erklären Sie, dass Argumente das solide Anteil des Aufrufens der Funktion sind.
Der Code ist wie folgt:
Kopieren Sie den Code -Code wie folgt:
var class = {
Erstellen: function () {
Return function () {
this.initialize.apply (this, Argumente);
}
}
}
Argumente sind das feste Array von Konstruktors, die durch Erstellen zurückgegeben werden, also
var a = new a ('Helloord!');
Zum Zeitpunkt von 'HelloOword!' Handelt es sich bei der soliden Parametergruppe (obwohl es nur eine Zeichenfolge gibt), die an die Methode übergeben und dann an die Initialisierungsfunktion als Parameter übergeben wurde.