Где определяется свойство "прототип"
Ну, я все время предполагал, что свойство прототипа существует у всех объектов. Но после одного из собеседований я пришел домой и открыл консоль chrome
window.prototype
**undefined**
WTF?
Object.prototype
**Object {}**
ОК
var a = {};
a.prototype
**undefined**
var a = function(){}
a.prototype
**Object {}**
Я читал https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype несколько раз, но все еще не ясно. Кто-нибудь может объяснить?
Thanx
С. П. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype
Все объекты в JavaScript происходят от объекта; все объекты наследование методов и свойств от объекта.прототип, хотя они может быть переопределен (за исключением объекта с нулевым прототипом, т. е. Объект.create (null)
Окно является объектом, поэтому оно должно иметь свойство прототипа
1 ответ:
Объект, наследуемый экземпляром, его прототип, хранится во внутреннем свойстве,
[[Prototype]]
. Его значение можно получить с помощьюObject.getPrototypeOf()
(в ES5-совместимых двигателях).console.log(Object.getPrototypeOf(window)); // Window { ... } var a = {}; console.log(Object.getPrototypeOf(a)); // Object { ... }
Только
function
s явно имеютprototype
свойство :console.log(typeof Object); // 'function'
И значение
prototype
просто используется для задания значения экземпляра[[Prototype]]
при создании экземпляраnew
.function Foo() {} var bar = new Foo(); console.log(Foo.prototype === Object.getPrototypeOf(bar)); // true