Vâng, tất cả thời gian tôi cho rằng thuộc tính nguyên mẫu tồn tại ở tất cả các đối tượng. Nhưng sau một cuộc phỏng vấn xin việc, tôi đã về nhà và mở bàn điều khiển chromeTrường hợp thuộc tính `nguyên mẫu` được xác định
window.prototype
**undefined**
WTF?
Object.prototype
**Object {}**
OK
var a = {};
a.prototype
**undefined**
var a = function(){}
a.prototype
**Object {}**
Tôi đã đọc https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype nhiều lần nhưng vẫn không rõ ràng. Ai có thể giải thích?
Thanx
P.S. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype
Tất cả các đối tượng trong JavaScript đều xuất phát từ đối tượng; tất cả các đối tượng kế thừa phương pháp và tài sản từ Object.prototype, mặc dù họ thể được ghi đè (trừ một đối tượng với một nguyên mẫu null, tức là Object.create (null)
cửa sổ là Object, vì vậy nó phải có nguyên mẫu tài sản
và quyền truy cập theo ký hiệu .prototype là gì? Tôi nghĩ rằng, Object.getPrototypeOf trở lại ._proto_ bất động sản isnt nó? –
@VasilVanchuk, myObject .__ proto__ thực hiện tương tự như Object.getPrototypeOf (myObject) trong các trình duyệt cũ hơn nhưng không được chấp nhận. Xem https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto –
@VasilVanchuk 1) 'Hàm' 'chỉ có thuộc tính' prototype' để các trường hợp kế thừa từ đối tượng thay vì bản thân hàm tạo. Tuy nhiên, bất kỳ đối tượng nào cũng có thể được sử dụng làm nguyên mẫu của một đối tượng khác ([Object.create() '] (http://ecma-international.org/ecma-262/5.1/#sec-15.2.3.5)), do đó, Thuộc tính 'prototype' không cần thiết và thường sẽ không được tìm thấy. 2) Và, yeah, 'getPrototypeOf()' và '__proto__' sẽ cung cấp cùng một giá trị. Tuy nhiên, '__proto__' không chuẩn và đã không được chấp nhận trong một số trình duyệt hỗ trợ. –