Nguyên mẫu đối tượng JavaScript
Tất cả các đối tượng JavaScript kế thừa các thuộc tính và phương thức từ một nguyên mẫu.
Trong chương trước, chúng ta đã học cách sử dụng một phương thức khởi tạo đối tượng :
Thí dụ
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");
Chúng tôi cũng biết rằng bạn không thể thêm một thuộc tính mới vào một phương thức khởi tạo đối tượng hiện có:
Thí dụ
Person.nationality = "English";
Để thêm một thuộc tính mới vào một hàm tạo, bạn phải thêm nó vào hàm tạo:
Thí dụ
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.nationality = "English";
}
Kế thừa nguyên mẫu
Tất cả các đối tượng JavaScript kế thừa các thuộc tính và phương thức từ một nguyên mẫu:
Date
các đối tượng kế thừa từDate.prototype
Array
các đối tượng kế thừa từArray.prototype
Person
các đối tượng kế thừa từPerson.prototype
Ở Object.prototype
trên cùng của chuỗi kế thừa nguyên mẫu:
Date
đối tượng, Array
đối tượng và Person
đối tượng kế thừa từ Object.prototype
.
Thêm thuộc tính và phương thức vào đối tượng
Đôi khi bạn muốn thêm thuộc tính (hoặc phương thức) mới vào tất cả các đối tượng hiện có của một kiểu nhất định.
Đôi khi bạn muốn thêm các thuộc tính (hoặc phương thức) mới vào một phương thức khởi tạo đối tượng.
Sử dụng Thuộc tính nguyên mẫu
Thuộc tính JavaScript prototype
cho phép bạn thêm các thuộc tính mới vào các hàm tạo đối tượng:
Thí dụ
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.nationality = "English";
Thuộc tính JavaScript prototype
cũng cho phép bạn thêm các phương thức mới vào các hàm tạo đối tượng:
Thí dụ
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.name = function() {
return this.firstName + " " + this.lastName;
};
Chỉ sửa đổi nguyên mẫu của riêng bạn. Không bao giờ sửa đổi nguyên mẫu của các đối tượng JavaScript tiêu chuẩn.