Cho phép bạn mở rộng các đối tượng có sẵn (chẳng hạn như String, Date, Array…) và thêm các phương thức hoặc thuộc tính mới vào các đối tượng đó.
Điều này cho phép bạn tái sử dụng mã dễ dàng hơn và tạo ra các phương thức tùy chỉnh cho các đối tượng đã có.
prototype là một thuộc tính của mỗi đối tượng trong JavaScript, cho phép bạn thêm phương thức hoặc thuộc tính cho tất cả các thể hiện (instances) của đối tượng đó.
Một số ứng dụng hay gặp Prototype trong Apps Script
Nếu bạn thêm một phương thức vào Array.prototype, tất cả các mảng trong JavaScript sẽ có thể sử dụng phương thức đó.
Nếu bạn thêm một phương thức vào String.prototype, tất cả các chuỗi trong JavaScript sẽ có thể sử dụng phương thức đó.
Trong Google Apps Script, bạn có thể mở rộng các đối tượng như Date, String, Array hoặc thậm chí các đối tượng mà bạn tự định nghĩa để thêm các phương thức và thuộc tính tùy chỉnh.
Việc này rất hữu ích khi bạn cần các chức năng đặc biệt cho các đối tượng mà không muốn thay đổi hoặc sao chép mã nguồn của các đối tượng đó.
Giả sử bạn muốn thêm một phương thức vào String.prototype để kiểm tra xem một chuỗi có chứa một từ khóa cụ thể hay không.
// Thêm phương thức `contains` vào String prototype
String.prototype.contains = function(substring) {
return this.indexOf(substring) !== -1;
};
// Kiểm tra phương thức `contains`
function testContains() {
var str = "Hello, world!";
Logger.log(str.contains("world")); // Output: true
Logger.log(str.contains("JavaScript")); // Output: false
}
Giả sử bạn muốn thêm một phương thức isWeekend vào Date.prototype để kiểm tra xem ngày có phải là cuối tuần không (Chủ Nhật hoặc Thứ Bảy).
// Thêm phương thức `isWeekend` vào Date prototype
Date.prototype.isWeekend = function() {
var day = this.getDay(); // Lấy ngày trong tuần (0 - Chủ nhật, 6 - Thứ bảy)
return day === 0 || day === 6; // Nếu là chủ nhật (0) hoặc thứ 7 (6) thì là cuối tuần
};
// Kiểm tra phương thức `isWeekend`
function testIsWeekend() {
var date1 = new Date('2024-12-21'); // Thứ 7
var date2 = new Date('2024-12-23'); // Thứ 2
Logger.log(date1.isWeekend()); // Output: true
Logger.log(date2.isWeekend()); // Output: false
}
Bạn có thể mở rộng Array để thêm các phương thức tùy chỉnh. Ví dụ, bạn muốn thêm phương thức để tìm giá trị lớn nhất trong mảng.
// Thêm phương thức `getMax` vào Array prototype
Array.prototype.getMax = function() {
return Math.max(...this); // Tìm giá trị lớn nhất trong mảng
};
// Kiểm tra phương thức `getMax`
function testGetMax() {
var arr = [3, 5, 7, 2, 8, 6];
Logger.log(arr.getMax()); // Output: 8
}
Không thay đổi các phương thức tích hợp: Bạn cần lưu ý rằng việc thay đổi các phương thức gốc của đối tượng như Array, String, Date có thể gây ra các vấn đề không mong muốn, đặc biệt khi bạn làm việc với các thư viện khác hoặc mã của người khác. Việc này có thể gây lỗi hoặc sự không tương thích.
Hiệu suất: Nếu bạn thêm quá nhiều phương thức vào prototype hoặc nếu bạn làm việc với dữ liệu lớn, có thể ảnh hưởng đến hiệu suất, vì các phương thức này sẽ phải được tính toán mỗi khi được gọi.
Quản lý mã nguồn: Việc mở rộng các đối tượng nguyên thủy có thể làm mã của bạn khó hiểu và khó duy trì. Trong một số trường hợp, thay vì mở rộng các đối tượng tích hợp, bạn có thể cân nhắc viết các hàm hoặc lớp riêng để thực hiện các tác vụ đặc biệt.
Trong Google Apps Script, prototype là một khái niệm xuất phát từ JavaScript và có thể được sử dụng trong Google Apps Script, vì Apps Script được xây dựng trên nền tảng JavaScript