J'utilise JS pour écrire des méthodes axées sur les objets auto-justes. J'ai rencontré un problème, qui est de définir une méthode, comme suit:
La copie de code est la suivante:
fonction listCommon2 (premier, deuxième, troisième)
{
this.first = function ()
{
alert ("First Do" + First);
}
}
ListCommon2.do1 = fonction (premier)
{
// this.first ();
alert ("First Do" + First);
}
ListCommon2.prototype.do2 = fonction (premier)
{
// this.first ();
alert ("First Do" + First);
}
Quelle est la différence entre les deux méthodes? Quelle est la fonction d'utiliser le prototype ou non?
Code de test:
La copie de code est la suivante:
var t1 = new listCommon2 ("Boil Water 1", "Brew Tea 1", "Drink 1");
// t1.do1 (); // une erreur s'est produite lorsque l'appel
ListCommon2.do1 ("Eau bouilli 1");
var t2 = new listCommon2 ("Boil Water 2", "Acheter Tea 2", "Drink 2");
T2.DO2 ("Eau bouillante 2"); //
// listCommon2.Do2 ("Boulement Water 1"); // Une erreur s'est produite dans l'appel
Après test, il a été constaté que la méthode qui n'utilisait pas le prototype est équivalente à la méthode statique de la classe, donc elle peut être appelée de cette manière, ListCommon2.do1 ("Boiling Water 1");, s'il est appelé de cette manière, une erreur se produira, T1.Do1 ();
Au contraire, la méthode utilisant le prototype est équivalente à la méthode d'instance de la classe et ne peut pas être utilisée après Nouveau. ListCommon2.do2 ("Boile Water 1"); Cela entraînera une erreur.
Conclusion: La méthode définie à l'aide du prototype est équivalente à la méthode d'instance d'une classe et doit être utilisée après Nouveau. Les limites de la fonction qui peuvent être appelées dans la fonction seront également similaires aux limites de la méthode d'instance d'une classe.
L'utilisation de méthodes définies sans utiliser de prototype est équivalente aux méthodes statiques de la classe. Vous pouvez les utiliser directement sans neuf. Les restrictions des fonctions qui peuvent être appelées dans les fonctions seront également similaires aux limites des méthodes statiques de la classe.
Par exemple, ce.First () ne peut pas être appelé;