Так, перший static methodтакож називається class method, а другий - an instance method.
Розглянемо наступні приклади, щоб зрозуміти це більш детально.
В 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;
}
У наведеному вище коді isPersonє статичним методом, тоді як sayHiє методом екземпляра Person.
Нижче - як створити об’єкт із Personконструктора.
var aminu = new Person("Aminu", "Abubakar");
Використання статичного методу isPerson.
Person.isPerson(aminu); // will return true
Використовуючи метод екземпляра sayHi.
aminu.sayHi(); // will return "Hi Aminu"
В ES6
class Person {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
static isPerson(obj) {
return obj.constructor === Person;
}
sayHi() {
return `Hi ${this.firstName}`;
}
}
Подивіться, як staticключове слово використовувалося для оголошення статичного методу isPerson.
Створити об’єкт Personкласу.
const aminu = new Person("Aminu", "Abubakar");
Використання статичного методу isPerson.
Person.isPerson(aminu); // will return true
Використовуючи метод екземпляра sayHi.
aminu.sayHi(); // will return "Hi Aminu"
ПРИМІТКА: Обидва приклади по суті однакові, JavaScript залишається мовою без класів. classВведена в ES6 в основному синтаксичні цукор поверх існуючого прототипу на основі моделі успадкування.