---
description: https://app.gitbook.com/@javascriptuse/s/advanced/creational-pattern-ok
---

# Constructor Pattern (ok)

Khái niệm constructor thì khá quen thuộc với các bạn coder rồi. Chuyên dụng để tạo một object cụ thể nào đó. Ví dụ idol là object chung chung, nhưng cụ thể idol thì có Ngọc Trinh, Kỳ Hân, Hoàng Thùy Linh. Đã là Idol thì đều có thuộc tính chân nhưng e Ngọc Trinh thì chân trắng, em Kỳ Hân thì chân dài, em Hoàng Thùy Linh là chân to. Mặc dù JavaScript không có khái niệm về class như Java (trừ TypeScript, một dạng mở rộng của JavaScript) nhưng nó vẫn hỗ trợ hàm constructor

```
function Idol(name, leg, chest) {
  this.name = name;
  this.leg = leg;
  this.chest = chest;
  this.toString = function() {
    return this.name + " has  " + this.leg + " and" + this.chest;
  };
}
var ngocTrinh = new Idol("Ngoc Trinh", "dài", "lép");
var thuyTop = new Idol("Thuy Top", "to", "khủng");
```

Nhìn code trên thì có 2 object được tạo theo pattern là ngocTrinh chân dài ngực lép với thuyTop chân to ngực khủng Function trong JavaScript còn có kiểu thuộc tính gọi là prototype. Protoype tạm hiểu là cha của một object. Cha của Idol là Idol.protype

```
function Idol(name, leg, chest) {
  this.name = name;
  this.leg = leg;
  this.chest = chest;
}
Idol.prototype.toString = function() {
  return this.name + " has " + this.leg + " and" + this.chest;
};
var ngocTrinh = new Idol("Ngoc Trinh", "dài", "lép");
var thuyTop = new Idol("Thuy Top", "to", "khủng");
console.log(ngocTrinh.toString());
```
