Ja, der erste wird static methodauch genannt class method, während der zweite ein ist instance method.
Betrachten Sie die folgenden Beispiele, um sie genauer zu verstehen.
In 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;
}
Im obigen Code isPersonhandelt es sich um eine statische Methode, während sayHies sich um eine Instanzmethode von handelt Person.
Im Folgenden wird beschrieben, wie Sie ein Objekt aus dem PersonKonstruktor erstellen .
var aminu = new Person("Aminu", "Abubakar");
Mit der statischen Methode isPerson.
Person.isPerson(aminu); // will return true
Verwenden der Instanzmethode sayHi.
aminu.sayHi(); // will return "Hi Aminu"
In ES6
class Person {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
static isPerson(obj) {
return obj.constructor === Person;
}
sayHi() {
return `Hi ${this.firstName}`;
}
}
Sehen Sie sich an, wie das staticSchlüsselwort zum Deklarieren der statischen Methode verwendet wurde isPerson.
So erstellen Sie ein PersonKlassenobjekt.
const aminu = new Person("Aminu", "Abubakar");
Mit der statischen Methode isPerson.
Person.isPerson(aminu); // will return true
Verwenden der Instanzmethode sayHi.
aminu.sayHi(); // will return "Hi Aminu"
HINWEIS: Beide Beispiele sind im Wesentlichen gleich. JavaScript bleibt eine klassenlose Sprache. Das classin ES6 eingeführte Modell ist in erster Linie ein syntaktischer Zucker gegenüber dem vorhandenen prototypbasierten Vererbungsmodell.