Từ khóa class, extends

Từ khóa class và extends

Từ ES2015, chúng ta có thể sử dụng thêm từ khóa classextends 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