Tôi nghĩ rằng tôi hiểu thừa kế nguyên mẫu trong JS nhưng tôi gặp khó khăn khi viết mã để chứng minh một ý tưởng cụ thể mà tôi có. Hãy xem xét kịch bản cực kỳ đơn giản này, nơi các đối tượng quản lý xuất phát từ đối tượng Employee:Thừa kế nguyên mẫu không có mẫu thử nghiệm?
function Employee()
{
this.name = "Axel";
this.dept = "R&D";
}
function Manager()
{
Employee.call(this);
this.reports = ["Report 1", "Report 2", "Report 3"];
}
console.log(new Manager());
Đầu ra là:
Manager {name: "Axel", dept: "R&D", reports: Array[3]}
Lạ lùng thay, có vẻ như với tôi rằng chúng tôi đã thành công trong việc chứng minh quyền thừa kế nguyên mẫu. Nhưng sự thật là chúng tôi đã không sử dụng prototype
ở bất cứ nơi nào làm phiền tôi. Chắc chắn đoạn mã trên không phải là cách để làm điều đó?
Ai đó có thể cung cấp ví dụ cho thấy cách tiếp cận trên không thành công?
(Bằng cách này, ví dụ xuất phát từ các tài liệu chính thức của Mozilla, trừ các thiết lập của nguyên mẫu: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Details_of_the_Object_Model)
Không có gì sai với cách tiếp cận trên. Trong trường hợp này, bạn chỉ sửa đổi một đối tượng * duy nhất *, trong khi với nguyên mẫu, bạn có thể sửa đổi * tất cả các đối tượng * với cùng một mẫu thử nghiệm. – meskobalazs
@meskobalazs Tôi sợ tâm trí được đào tạo theo kiểu cổ điển của tôi không tuân theo. Nếu tôi viết một loạt các 'mới Manager() 'tôi sẽ không nhận được tất cả ba tài sản (tên, dept và báo cáo)? Như vậy, có vẻ như với tôi rằng __all objects__ xa hơn xuống đường được sửa đổi. – dotslash
Bạn không sử dụng nguyên mẫu hoặc thừa kế nguyên mẫu ở đây. Thay vào đó, bạn đang thiết lập các thuộc tính trực tiếp trên từng đối tượng riêng lẻ. –