1. Verwendung von Grundklassen
Methode 1:
function sth(a) // Konstruktor
{
this.a = a;
this.fun = output; // Member function
}
Funktionsausgabe(a, b, c)
{
document.write(this.a);
//Call
var s = new sth(250);
s.fun(1, 2, 3);
ouput(1, 2, 3); //Wenn die Ausgabe erfolgt etw. Es war vorher falsch
Methode 2:
Funktion etw(a)
{
this.a = a;
this.output = function()
{
document.write(this.a); }
var s = new sth(2);
s.output(); // Ausgabe 2
2. Vererbung
Methode 1:
this.x = x ;
}
function B(x, y)
{ // Methode 1
/*
this.construct = A;
this.construct(x);
delete this .construct;
*/
// Methode 2
//A.call(this, x);
// Methode 3
A.apply(this , new Array(x)); // Sie können auch A.apply(this, arguments) verwenden, aber die Reihenfolge der Argumente muss korrekt sein
this.y = y;
this.print = function ()
{
document.write("x = ", x,
", y = ", y);
var b = new B(1, 2);
b.print();
alert(B instanceof A); // Ausgabe falsch
Vorteile: Es kann eine Mehrfachvererbung erreicht werden (einfach mehrere Anrufe tätigen)
Nachteile:
· Muss als Konstruktor verwendet werden
· Die Verwendung des „Instanceof“-Operators zum Ausführen dieser Art der Vererbung führt zu „False“
Methode 2:
Code kopieren
function B()
{
}
B.prototype = new A(); // Parameter können nicht übernommen werden!
B.prototype.y = 2;
B.prototype.print = function()
{
document.write(this.x, ", ", this.y, "
}
var b = new B();
b.print();
document.write(b Instanz von A); // Ausgabe wahr
Nachteile:
· Mehrfachvererbung kann nicht implementiert werden
· Konstruktor ohne Parameter
Tipps
Verwenden Sie normalerweise den gemischten Modus, beide zusammen
Kopieren Sie den Code
A.prototype.printx = function() // In Klasse A schreiben this.printx = function... . Es ist auch möglich, das Gleiche unten
{
document.write(this.x, "
"}
function B(x, y)
{
A.call(this, x);
this.y =
}
B.prototype = new A();
B.prototype.printxy = function()
{
document.write(this.x, ", ", this.y, "
"}
var b = new B(1, 2);
b.printx(); // Ausgabe 1
b.printxy(); // Ausgabe 1, 2
document.write(b Instanz von A); // Ausgabe wahr
3. Verwendung ähnlicher statischer Elementfunktionen
Code kopieren
Der Code lautet wie folgt:
document. write(s.a );
}
var s = new sth(2);
sth.fun(s); // Ausgabe 2
4. Freigabe von Objekten
Code kopieren
Der Code lautet wie folgt:
var obj = new Object; // obj ist eine Referenz
obj = null; // Die Dereferenzierung führt automatisch eine Speicherbereinigung durch. Wenn Sie dieses Objekt überhaupt freigeben müssen, weisen Sie alle seine Referenzen null zu 🎜 >
5. Funktionsobjekt
var v = new Function("arg1", "arg2", "document.write(arg1 arg2);" // Definiere ein Funktionsobjekt, die Parameter sind arg1, arg2
v(1, 2); // Wird 3 ausgeben
6. Rückruffunktion
function callback (func, arg)
{
func(arg);}
function fun(arg)
{
document.write(arg); 🎜>}
//callback(func, "sb"); // Dieser Ansatz funktioniert nicht
var func = new Function("arg", "fun(arg);" );
// Natürlich können Sie func(arg) auch durch spezifischen Ausführungscode ersetzen,
// Aber es ist am besten, dies zu tun, wenn der Funktionscode umfangreich ist
callback(func, "sb ");
7. Überladung von Funktionen
{ switch (arguments.length)
{
case 1:
document.write(arguments[0]);
break; > Fall 2:
document.write(arguments[0] arguments[1]);
break; 🎜> }
}
Spaß(1);
Spaß(1, 2);
8. Verwenden Sie Funktionsabschlüsse, um Funktionen mit „statischen Variablen“ zu implementieren
Code kopieren
Code As folgt:
document.write("
"); return v;
}
return fun2
var func = fun(); ;
func(); // Ausgabe 2
func(); // Ausgabe 3
func(); // Ausgabe 4