Phương thức và static

Thêm phương thức vào class

Khi tạo object với thừa khóa new thì object sẽ thừa kế thuộc tính prototype của class. Nên chúng ta thêm các phương thức vô các prototype này. Còn các thuộc tính chúng ta thêm vào ở constructor.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
// tương đương class constructor
function Animal(name) {
  // thêm các thuộc tính vào constructor
  this.name = name;
}
// thêm phương thức vào prototype
Animal.prototype.sayHi = function() {
  console.log(`Xin chào ${this.name}`);
};

var pet = new Animal("Teddy");
pet.sayHi(); // xin chào Teddy

var yourPet = new Animal("Toby");
yourPet.sayHi(); // xin chào Toby

Hàm static của class

Hàm static là một thuộc tính của class chứ không phải thuộc tính của prototype. Hàm này đi kèm với class chứ không phải object.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
function Animal(name) {
  this.name = name;
}

// hàm thông thường
Animal.prototype.sayName = function() {
  return `Xin chào ${this.name}`;
}

// hàm static
Animal.getName = function() {
  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

Ví dụ hàm static mặc định của Javascript như hàm String.raw hoặc hàm String.fromCharCode