Oui, le premier est static method
également appelé class method
, tandis que le second est un instance method
.
Considérez les exemples suivants, pour le comprendre plus en détail.
Dans ES5
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
Person.isPerson = function(obj) {
return obj.constructor === Person;
}
Person.prototype.sayHi = function() {
return "Hi " + this.firstName;
}
Dans le code ci-dessus, isPerson
est une méthode statique, tandis que sayHi
est une méthode d'instance de Person
.
Ci-dessous, comment créer un objet à partir du Person
constructeur.
var aminu = new Person("Aminu", "Abubakar");
Utilisation de la méthode statique isPerson
.
Person.isPerson(aminu); // will return true
Utilisation de la méthode d'instance sayHi
.
aminu.sayHi(); // will return "Hi Aminu"
Dans ES6
class Person {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
static isPerson(obj) {
return obj.constructor === Person;
}
sayHi() {
return `Hi ${this.firstName}`;
}
}
Regardez comment le static
mot clé a été utilisé pour déclarer la méthode statique isPerson
.
Créer un objet de Person
classe.
const aminu = new Person("Aminu", "Abubakar");
Utilisation de la méthode statique isPerson
.
Person.isPerson(aminu); // will return true
Utilisation de la méthode d'instance sayHi
.
aminu.sayHi(); // will return "Hi Aminu"
REMARQUE: les deux exemples sont essentiellement les mêmes, JavaScript reste un langage sans classe. Le class
introduit dans ES6 est principalement un sucre syntaxique sur le modèle d'héritage basé sur un prototype existant.