1. Verwendung von Basisklassen
Methode 1:
Die Codekopie lautet wie folgt:
Funktion Sth (a) // Konstruktorfunktion
{
this.a = a;
this.fun = output; // Mitgliedsfunktion
}
Funktionsausgang (a, b, c)
{
document.write (this.a);
}
//Anruf
var s = neuer sth (250);
S.Fun (1, 2, 3);
ou put (1, 2, 3); // Wenn die Ausgabe vor sth falsch ist
Methode 2:
Kopieren Sie den Code wie folgt: Funktion sth (a)
{
this.a = a;
this.output = function ()
{
document.write (this.a);
}
}
var s = neuer sth (2);
s.output (); // Ausgabe 2
2. Vererbung
Methode 1:
Kopieren Sie den Code wie folgt: Funktion A (x)
{
this.x = x;
}
Funktion B (x, y)
{
// Methode 1
/*
this.construct = a;
this.construct (x);
Löschen Sie dies.Construct;
*/
// Methode 2
//A.call(this, x);
// Methode 3
A.Apply (this, New Array (x)); // Es kann auch A.Apply sein (dies, Argumente), aber die Argumentparameterreihenfolge muss korrekt sein
this.y = y;
this.print = function ()
{
document.write ("x =", x,
", y =", y);
}
}
var b = neu B (1, 2);
B.print ();
Alarm (b Instanz von a); // false ausgeben
Vorteile: Multiple Vererbung kann erreicht werden (rufen Sie einfach mehrere Anrufe an)
Mangel:
・ Muss als Konstruktor verwendet werden
・ Verwenden Sie den Instanzbetreiber, um dieses Vererbungsergebnis auf False zu betreiben
Methode 2:
Kopieren Sie den Code wie folgt: Funktion a ()
{
}
A.Prototype.x = 1;
Funktion B ()
{
}
B.Prototype = new a (); // kann keine Parameter nehmen!
B.Prototype.y = 2;
B.Prototype.print = Funktion ())
{
document.write (this.x, ",", this.y, "<br>");
}
var b = neu B ();
B.print ();
document.write (b Instanz von a); // Ausgabe true
Mangel:
・ Kann kein Mehrfachvererbung erreichen
・ Der Konstruktor hat keine Parameter
Tipps
Normalerweise verwenden Sie einen Hybridmodus
Die Codekopie lautet wie folgt:
Funktion a (x)
{
this.x = x;
}
A.Prototype.printx = function () // this.printx = function .... Es ist auch möglich, dass gleiche unten möglich ist
{
document.write (this.x, "<br>");
}
Funktion B (x, y)
{
A. CALL (this, x);
this.y = y;
}
B.Prototype = new a (); // kann keine Parameter nehmen!
B.Prototype.printxy = function ())
{
document.write (this.x, ",", this.y, "<br>");
}
var b = neu B (1, 2);
B.printx (); // Ausgabe 1
B. printxy (); // Ausgabe 1, 2
document.write (b Instanz von a); // Ausgabe true
3. Verwendung statischer Mitgliedsfunktionen
Kopieren Sie den Code wie folgt: Funktion sth (a)
{
this.a = a;
}
sth.fun = Funktion (s)
{
document.write (sa);
}
var s = neuer sth (2);
sth.fun (s); // Ausgabe 2
Iv. Freigabe von Objekten
Kopieren Sie den Code wie folgt: var obj = neues Objekt; // obj ist eine Referenz
obj = null; // Dereference wird automatisch die Müllsammlung; Wenn Sie dieses Objekt überhaupt veröffentlichen müssen, müssen alle Referenzen NULL zugewiesen werden
V. Funktionsobjekt
Kopieren Sie den Code wie folgt: var v = new function ("arg1", "arg2", "document.write (arg1 + arg2);"); // Definieren Sie ein Funktionsobjekt mit den Parametern arg1 bzw. arg2
v (1, 2); // Ausgabe 3
6. Rückruffunktion
Kopieren Sie den Code wie folgt: Funktionsrückruf (func, arg)
{
func (arg);
}
Funktionsspaß (arg)
{
document.write (arg);
}
// Rückruf (Func, "SB"); // Diese Methode funktioniert nicht
var func = new function ("arg", "fun (arg);");
// Natürlich kann Func (ARG) auch durch spezifischen Ausführungscode ersetzt werden.
// aber wenn der Funktionscode riesig ist, ist es besser, dies zu tun
Rückruf (Func, "SB");
7. Funktion Überladung
Kopieren Sie den Code wie folgt: Funktion Fun ()
{
Switch (Argumente.Length)
{
Fall 1:
document.write (Argumente [0]);
brechen;
Fall 2:
document.write (Argumente [0] + Argumente [1]);
brechen;
Standard:
document.write ("Fehler!");
brechen;
}
}
Spaß (1);
Spaß (1, 2);
8. Verwenden Sie den Funktionsverschluss, um Funktionen mit "statischen Variablen" zu implementieren
Kopieren Sie den Code wie folgt: Funktion Fun ()
{
var v = 1;
Funktion fun2 ()
{
++ V;
document.write (v);
document.write ("<br>");
Rückkehr v;
}
Rückkehr Fun2;
}
var func = fun ();
func (); // Ausgabe 2
func (); // Ausgabe 3
func (); // Ausgabe 4