Vâng, cái đầu tiên là một static method
cũ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, isPerson
là một phương thức tĩnh, trong khi sayHi
là 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ừ Person
constructor.
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 static
từ 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 Person
lớ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 class
giớ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ó.