1. Utilisation des classes de base
Méthode 1 :
function sth(a) // Constructeur
{
this.a = a;
this.fun = output;
fonction sortie(a, b, c)
{
document.write(this.a);
}
//Appel
var s = new sth(250);
s.fun(1, 2, 3);
ouput(1, 2, 3); qc C'était mal avant
Méthode 2 :
fonction qch(a)
{
this.a = a;
this.output = function()
{
document.write(this.a);
}
}
var s = new sth(2);
s.output(); // Sortie 2
2. Héritage
Méthode 1 : fonction A(x)
{
this.x = x ;
}
function B(x, y)
{
// Méthode 1
/*
this.construct = A
this.construct(x); .construct;
*/
// Méthode 2
//A.call(this, x);
// Méthode 3
A.apply(this); , new Array(x)); // Vous pouvez également A.apply(this, arguments), mais l'ordre des arguments doit être correct
this.y = y
this.print = function; ()
{
document.write("x = ", x,
", y = ", y
}
}
);
var b = new B(1, 2);
b.print();
alert(B instanceof A); // Sortie false
Avantages : un héritage multiple peut être obtenu (il suffit de passer plusieurs appels)
Inconvénients :
· Doit être utilisé comme constructeur
· L'utilisation de l'opérateur instanceof pour opérer ce type d'héritage entraîne false
Méthode 2 :
{
} A.prototype.x = 1;
fonction B()
{
}
B.prototype = new A(); // Impossible de prendre des paramètres !
B.prototype.y = 2;
B.prototype.print = function()
{
document.write(this.x, ", ", this.y, "
}
var b = new B();
b.print();
document.write(b instanceof A); // Sortie true
Inconvénients :
· Impossible d'implémenter l'héritage multiple
· Constructeur sans paramètres
Conseils
Utilisez généralement le mode mixte, les deux ensemble
function A(x)
{
this.x = x
}
A.prototype.printx = function() // Écrivez dans la classe A this.printx = function... . C'est aussi possible, pareil ci-dessous
{
document.write(this.x, "
"
}
function B(x, y)
{
A.call(this, x);
this.y = y;
}
B.prototype = new A();
B.prototype.printxy = function()
{
document.write(this.x, ", ", this.y, "
"
}
var b = new B(1, 2);
b.printx(); // Sortie 1
b.printxy(); // Sortie 1, 2
document.write(b) instanceof A); // Sortie vrai
3. Utilisation de fonctions membres statiques similaires
{
this.a = a
}
sth.fun = function(s)
{
document. write(s.a );
}
var s = new sth(2);
sth.fun(s); // Sortie 2
4. Libération des objets
obj = null; // La déréférence effectuera automatiquement le garbage collection si vous devez libérer cet objet, attribuez toutes ses références à null
5. Objet fonction
var v = new Function("arg1", "arg2", "document.write(arg1 arg2);"); // Définir un objet fonction, les paramètres sont arg1, arg2
v(1, 2); // Will Will produira 3
6. Fonction de rappel
rappel de fonction (func, arg)
{
func(arg);
}
function fun(arg)
{
document.write(arg); 🎜>}
//callback(func, "sb"); // Cette approche ne fonctionne pas
var func = new Function("arg", "fun(arg);" );
// Bien sûr, vous pouvez également remplacer func(arg) par un code d'exécution spécifique,
// Mais il est préférable de le faire si le code de la fonction est énorme
callback(func, "sb ");
7. Surcharge des fonctions
function fun()
{
switch (arguments.length)
{
cas 1 :
document.write(arguments[0]); > cas 2 :
document.write(arguments[0] arguments[1]);
break;
default:
document.write("ERROR!"); 🎜> }
}
amusement(1);
amusement(1, 2);
8. Utilisez des fermetures de fonctions pour implémenter des fonctions avec des "variables statiques"
Copier le code
{
v;
document.write("
");
return v;
}
return fun2
}
var func = fun() ;
func(); // Sortie 2
func(); // Sortie 3
func(); // Sortie 4