Так, перший 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 в основному синтаксичні цукор поверх існуючого прототипу на основі моделі успадкування.