Vâng, cái đầu tiên là một static methodcũng được gọi class method, trong khi cái thứ hai là một instance method.
Hãy xem xét các ví dụ sau đây, để hiểu nó chi tiết hơn.
Trong 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;
}
Trong đoạn mã trên, isPersonlà một phương thức tĩnh, trong khi sayHilà một phương thức thể hiện của Person.
Dưới đây, là cách tạo một đối tượng từ Personconstructor.
var aminu = new Person("Aminu", "Abubakar");
Sử dụng phương pháp tĩnh isPerson.
Person.isPerson(aminu); // will return true
Sử dụng phương thức ví dụ sayHi.
aminu.sayHi(); // will return "Hi Aminu"
Trong ES6
class Person {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
static isPerson(obj) {
return obj.constructor === Person;
}
sayHi() {
return `Hi ${this.firstName}`;
}
}
Nhìn vào cách statictừ khóa được sử dụng để khai báo phương thức tĩnh isPerson.
Để tạo một đối tượng của Personlớp.
const aminu = new Person("Aminu", "Abubakar");
Sử dụng phương pháp tĩnh isPerson.
Person.isPerson(aminu); // will return true
Sử dụng phương thức ví dụ sayHi.
aminu.sayHi(); // will return "Hi Aminu"
LƯU Ý: Cả hai ví dụ về cơ bản là giống nhau, JavaScript vẫn là ngôn ngữ không có lớp. Các classgiới thiệu trong ES6 chủ yếu là một đường cú pháp trên mô hình thừa kế dựa trên nguyên mẫu hiện có.