Tôi biết rằng thuộc tính prototype
của đối tượng hàm JavaScript được sao chép vào thuộc tính nội bộ [[Prototype]]
(a.k.a. __proto__
) của các đối tượng được khởi tạo bằng cách sử dụng hàm làm hàm tạo. Vì vậy, tôi có thể thiết lập thuộc tính này cho bất kỳ đối tượng mà tôi muốn đóng vai trò như nguyên mẫu:Giá trị ban đầu của thuộc tính nguyên mẫu của hàm JavaScript là gì?
function Foo() {}
Foo.prototype = {
toString: function() { return "I'm a Foo!"; }
}
new Foo().toString()
// --> "I'm a Foo!"
Dường như đó là thực hành rộng rãi để thêm chức năng mà nên đóng vai trò là phương pháp lớp học để các nguyên mẫu của mới hiện chức năng được tạo ra như thế này:
function Bar() {}
Bar.prototype.toString = function() {
return "I'm a Bar!";
}
new Bar().toString()
// --> "I'm a Bar!"
Không rõ với tôi, tuy nhiên, những gì mà giá trị ban đầu của prototype
tài sản là.
function Baz() {}
Baz.prototype
// --> Baz {
// constructor: function Baz() {},
// __proto__: Object
// }
Nhận xét hiển thị bảng điều khiển JavaScript của Chrome sẽ in. Điều này có nghĩa là mọi chức năng tôi tạo thực sự tạo ra hai đối tượng? Một cho bản thân chức năng (constructor
) và một cho nguyên mẫu của nó?
Điều này có được định nghĩa ở đâu đó trong tiêu chuẩn ECMAScript không? Tôi cố gắng tìm nhưng không thể. Tất cả các trình duyệt có xử lý điều này theo cùng một cách không?
Cảm ơn. Đó chính là câu trả lời tôi đang tìm kiếm. – MForster
OMG! Tôi đi sâu vào đặc điểm kỹ thuật ECMAScript mọi lúc và sau đó, nhưng điều này hầu như không thể đọc được. Bạn có biết một nguồn tài nguyên giải thích mọi thứ trong đó từng bước (hoặc ít nhất là giải thích những phần khủng khiếp)? –
Đáng buồn là không. Đó là một sự xấu hổ không có tài liệu tham khảo tốt cho ECMAScript như một ngôn ngữ trong tiếng Anh thực tế, đặc biệt là vì rất nhiều tính năng của nó là ... để được hào phóng ... một chút kỳ quặc. Chúng tôi có các hướng dẫn dành riêng cho nhà cung cấp như MDC, MSDN và Adobe, chúng tôi có thông số kỹ thuật ECMA không thể sử dụng được nhiều (bạn đã quen với ngôn ngữ trên), nhưng nó vẫn thực sự nặng vào thời điểm tốt nhất), và ngoài ra có máng xối của các trang web hướng dẫn ngẫu nhiên có đầy đủ các lỗi và lời khuyên khủng khiếp. Và điều này, đối với một trong những ngôn ngữ được sử dụng rộng rãi nhất trên thế giới. Nó là vô vọng. – bobince