Hàm khởi tạo
Thuộc phần Lập trình hướng đối tượng trong hành trình JavaScript của Coddy. Bài học 4 trên 56.
Hàm khởi tạo (constructor function) là các hàm đặc biệt trong JavaScript, cho phép bạn tạo nhiều đối tượng có cùng cấu trúc và hành vi.
Định nghĩa hàm khởi tạo cho một Person:
function Person(name, age) {
this.name = name;
this.age = age;
this.greet = function() {
return "Hello, my name is " + this.name;
};
}Tạo một đối tượng Person mới bằng hàm khởi tạo:
const john = new Person("John", 30);
const tyler = new Person("Tyler", 35);Gọi hàm khởi tạo bằng từ khóa new. new tạo một đối tượng rỗng, chạy hàm với this trỏ đến đối tượng đó rồi trả về đối tượng, vì vậy this.name = name lưu tên vào john. Theo quy ước, tên hàm khởi tạo bắt đầu bằng chữ cái viết hoa (Person, Car) để cho biết chúng được dùng để gọi với new.
Nếu không có new, Person("John", 30) là một lệnh gọi hàm thông thường: không có đối tượng nào được tạo, this là đối tượng toàn cục (hoặc undefined trong chế độ nghiêm ngặt), và lệnh gọi trả về undefined.
Sau khi chạy đoạn code trên, john là một đối tượng có các thuộc tính:
// Đối tượng (object) john chứa:
{
name: "John",
age: 30,
greet: function() { return "Hello, my name is John"; }
}Truy cập thuộc tính (property) và gọi phương thức (method):
console.log(john.name); // In ra: John
console.log(john.greet()); // In ra: Hello, my name is JohnThử thách
- Tạo một hàm khởi tạo có tên
Booknhận ba đối số:
title(Chuỗi)author(Chuỗi)pages(Số)
Hàm này cần đặt các thuộc tính trên đối tượng được tạo.
2. Thêm một phương thức có tên getSummary trả về một chuỗi chứa một số thông tin về cuốn sách: this.title + " was written by " + this.author + " and has " + this.pages + " pages";
Tự làm thử
// TODO: Tạo hàm khởi tạo (constructor) tên Book nhận ba đối số (argument) (title, author, pages)
// TODO: Gán các giá trị này làm thuộc tính (property) của đối tượng (object) vừa tạo
// TODO: Thêm phương thức (method) getSummary trả về một chuỗi (string) chứa thông tin về cuốn sách.
// Ví dụ: Harry Potter was written by Rowling and has 500 pages
// Đừng sửa đoạn code bên dưới
const inputTitle = inp[0]; // Dòng đầu tiên: tên sách
const inputAuthor = inp[1]; // Dòng thứ hai: tác giả
const inputPages = parseInt(inp[2]);// Dòng thứ ba: số trang
const book = new Book(inputTitle, inputAuthor, inputPages);
console.log(book.getSummary());Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Lập trình hướng đối tượng
1Đối tượng và từ khóa this
Ôn nhanh: đối tượngThêm phương thức vào đối tượngTìm hiểu từ khóa thisHàm khởi tạoTừ khóa newThử thách ôn tập7Kế thừa và từ khóa extends
Kế thừaQuan hệ "là một"Từ khóa extendsPhương thức super()Kế thừa thuộc tính và phương thứcThử thách ôn tập13Kết hợp hay kế thừa
Quan hệ “có một” và “là một”Những hạn chế của kế thừa nhiều tầngXây dựng đối tượng5Đóng gói và quyền truy cập
Đóng góiTrường công khai và trường riêng tưPhương thức riêng tưThử thách ôn tập8Tổ chức code OOP
Tổ chức các lớp thành module11Dự án: Trình hiển thị hình dạng
Thiết lập: lớp Hình dạng và xuấtKế thừa lớp Hình trònGhi đè và phương thức diện tíchBộ đếm hình dạng tĩnh6Dự án: Tài khoản ngân hàng đơn giản
Lớp BankAccountGửi tiền và rút tiềnSố dư dưới dạng thuộc tính riêng tư9Phương thức và thuộc tính tĩnh
Cấp lớp và cấp instanceThuộc tính tĩnhPhương thức tiện ích tĩnhThử thách ôn tậpTự luyện tập: Trình biên dịch JavaScript online