Hàm Constructor

Ở bài học trước bạn đã được tìm hiểu cách tạo đối tượng sử dụng cặp dấu ngoặc { }. Ở bài học này chúng ta sẽ tìm hiểu cách sử dụng hàm constructor trong JavaScipt để tạo đối tượng. Trước tiên chúng ta hãy tìm hiểu khái niệm lớp (class) trong các ngôn ngữ lập trình hướng đối tượng khác.

Lớp

Các ngôn ngữ lập trình hướng đối tượng phổ biến như PHP hay Java sử dụng các lớp (class) để định nghĩa các thuộc tính và phương thức cho đối tượng. Lớp là một bản kế hoạch để tạo đối tượng.

Ví dụ trong ngôn ngữ PHP chúng ta có thể định nghĩa một lớp Person như sau:

class Person {
    public $name;

    function _construct($name) {
        $this->name = $name;
    }

    function say() {
        echo "Xin chào, tôi tên là " . $this->name;
    }
}

Trong đó:

  • Thuộc tính $name.
  • Phương thức __construct() để gán các giá trị ban đầu cho thuộc tính của đối tượng và
  • Phương thức say().

Dựa trên lớp Person ở trên chúng ta có thể tạo ra được nhiều đối tượng khác nhau như $petermarry như đoạn mã dưới đây:

$peter = new Person("Peter");
$marry = new Person("Mary");

echo $peter->name;
echo $marry->name;

$peter->say();
$marry->say();

Tuy nhiên ngôn ngữ JavaScript không sử dụng các lớp để định nghĩa thuộc tính và phương thức cho đối tượng thay vào đó nó sử dụng hàm constructor và thuộc tính protype.

Hàm Constructor

Trong JavaScript, hàm constructor được dùng để định nghĩa các thuộc tính và phương thức ban đầu cho đối tượng được tạo ra sử dụng hàm này nhờ sử dụng từ khoá new.

Ở ví dụ dưới đây chúng ta sử dụng một hàm constructor với tên là Person để định nghĩa thuộc tính name và phương thức say() cho đối tượng.

function Person (name) {
    this.name = name;

    this.say = function () {
        alert("Xin chào, tên tôi là" + this.name);
    }
};
var peter = new Person("Peter");
peter.say();

Ở ví dụ trên đối tượng person có thuộc tính là name và phương thức say().

Từ Khoá this

Từ khoá this được sử dụng để tham chiếu tới đối tượng hiện tại đang sử dụng.

Từ khoá this có thể được sử dụng trong phương thức của đối tượng:

var num = {
  first: 1,
  second: 2,
  third: 3,
  average: function () {
    return (this.first + this.second + this.third) / 3;
  }
};

Hoặc trong khi định nghĩa hàm constructor:

function ThreeNumbers () {
    this.first: 1;
    this.second: 2;
    this.third: 3;
    this.average: function () {
        return (this.first + this.second + this.third) / 3;
    }
}

var myNumber = new ThreeNumbers(2, 3, 5);
myNumber.average();

Thêm Bình Luận