Sí, el primero static method
también se llama class method
, mientras que el segundo es un instance method
.
Considere los siguientes ejemplos para comprenderlo con más detalle.
En 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;
}
En el código anterior, isPerson
es un método estático, mientras que sayHi
es un método de instancia de Person
.
A continuación, se muestra cómo crear un objeto desde el Person
constructor.
var aminu = new Person("Aminu", "Abubakar");
Usando el método estático isPerson
.
Person.isPerson(aminu); // will return true
Usando el método de instancia sayHi
.
aminu.sayHi(); // will return "Hi Aminu"
En ES6
class Person {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
static isPerson(obj) {
return obj.constructor === Person;
}
sayHi() {
return `Hi ${this.firstName}`;
}
}
Mire cómo static
se utilizó la palabra clave para declarar el método estático isPerson
.
Para crear un objeto de Person
clase.
const aminu = new Person("Aminu", "Abubakar");
Usando el método estático isPerson
.
Person.isPerson(aminu); // will return true
Usando el método de instancia sayHi
.
aminu.sayHi(); // will return "Hi Aminu"
NOTA: Ambos ejemplos son esencialmente los mismos, JavaScript sigue siendo un lenguaje sin clases. El class
introducido en ES6 es principalmente un azúcar sintáctico sobre el modelo de herencia basado en prototipos existente.