Constructor function trong Javascript [JAVASCRIPT]


Hôm nay ta sẽ tìm hiểu constructor function trong javascript. Trong những bài viết trước ta đã biết cách tạo object dùng object literal.
var Info = {
  name: "Mr D",
  age: 34,
  getInfo: function(){
    return this.name + ' - ' + this.age;
  }
}

console.log(Info.name); // Mr D
console.log(Info.getInfo()); // Mr D - 34

Ta tạo ra 1 object tên là Info trong object này có 2 thuộc tính (properties) là name, age và 1 thương thức(method). Phương thức này dùng this để truy cập name và age. This tượng trưng cho chính object này. Cách tạo object này có nhượt điểm là ta muốn tạo nhiều object giống như vầy ta tốn rất nhiều công sức.

var Info1 = {
  name: "Mr D",
  age: 34,
  getInfo: function(){
    return this.name + ' - ' + this.age;
  }
}
var Info2 = {
  name: "Mr K",
  age: 1,
  getInfo: function(){
    return this.name + ' - ' + this.age;
  }
}


Để không lặp lại code như trên thì ta sẽ dùng constructor function. constructor sẽ tạo ra instance của object được định nghĩa trong function. Có nghĩa là constructor sẽ tạo ra các bản sao của object với các nội dung khác nhau. Ta xem ví dụ sau:

  // Info constructor
  // Tên của function ký tự đầu phải viết in hoa.
  function Info(name,age){
   this.name = name;
   this.age = age;
   this.getInfo = function(){
      return this.name + ' - ' + this.age;
   }
  }

  // khởi tạo instance tên là info1
  var info1 = new Info('Mr D',34);
  
  console.log(info1.name); // Mr D
  console.log(info1.getInfo()); // Mr D - 34
 
  // khởi tạo instance tên là info2
  var info2 = new Info('Mr K',1);
  
  console.log(info2.name); // Mr K
  console.log(info2.getInfo()); // Mr K - 1

Như vậy ta hiểu constructor function dùng để làm gì rồi. ^_^