Từ khóa class và extends
Từ ES2015, chúng ta có thể sử dụng thêm từ khóa class
và extends
cùng với hàm constructor
và hàm super
của class. Đây là cú pháp thay thế (sugar syntax) cho cú pháp sử dụng thừa kế phương pháp cũ chứ bản thân bên trong ngôn ngữ JavaScript không có gì thay đổi. Ngoài ra trong trường hợp trình duyệt không hổ trợ, chúng ta có thể sử dụng các chương trình Babel
để chuyển cú pháp này về dạng cú pháp cũ.
Chúng ta tạo lại class Animal, Dog viết lại từ ví dụ trước sử dụng cú pháp mới.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
class Animal {
constructor(name) {
this.name = name;
}
sayName() {
return `Xin chào ${this.name}`;
}
}
class Dog extends Animal {
constructor(name, age) {
super(name);
this.age = age;
}
}
var myPet = new Dog('Billy', 4);
console.log(myPet); // -> Dog {name: "Billy", age: 4}
console.log(myPet.sayName()); // -> Xin chào Billy
|
Hàm static
Thêm từ khóa static
trước tên hàm sẽ cho biết đó là hàm static.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
class Animal {
constructor(name) {
this.name = name;
}
// hàm thông thường
sayName() {
return `Xin chào ${this.name}`;
}
// hàm static
static getName() {
return 'Tên tôi là Animal';
}
}
console.log(Animal.getName()); // Tên tôi là Animal
var myPet = new Animal('Billy');
console.log(myPet.sayName()); // Xin chào Billy
myPet.getName(); // Lỗi vì hàm này đi với class
|