Ja, der erste wird static method
auch 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 isPerson
handelt es sich um eine statische Methode, während sayHi
es sich um eine Instanzmethode von handelt Person
.
Im Folgenden wird beschrieben, wie Sie ein Objekt aus dem Person
Konstruktor 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 static
Schlüsselwort zum Deklarieren der statischen Methode verwendet wurde isPerson
.
So erstellen Sie ein Person
Klassenobjekt.
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 class
in ES6 eingeführte Modell ist in erster Linie ein syntaktischer Zucker gegenüber dem vorhandenen prototypbasierten Vererbungsmodell.