Cóż, cały czas sądziłem, że właściwość prototypu istnieje we wszystkich obiektach. Ale po jednym z rozmów kwalifikacyjnych wróciłem do domu i otworzyłem konsolę chromowanąGdzie zdefiniowano właściwość `prototype`
window.prototype
**undefined**
WTF?
Object.prototype
**Object {}**
OK
var a = {};
a.prototype
**undefined**
var a = function(){}
a.prototype
**Object {}**
Czytałem https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype kilka razy, ale nadal nie jest jasne. Czy ktoś może wyjaśnić?
Thanx
P.S. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype
Wszystkie obiekty w JavaScript pochodzą od Object; Wszystkie obiekty dziedziczą metod i właściwości z Object.prototype, chociaż mogą być przesłonić (z wyjątkiem obiekt o zerowym prototypu, tj Object.create (null)
okno jest Object, więc musi mieć prototyp nieruchomość
a co z dostępem przez zapisywanie .prototype? Myślę, że Object.getPrototypeOf return ._proto_ property nie jest? –
@VasilVanchuk, myObject .__ proto__ robi to samo, co Object.getPrototypeOf (myObject) w starszych przeglądarkach, ale jest przestarzałe. Zobacz https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto –
@VasilVanchuk 1) 'Funkcja ma tylko właściwość' prototype', więc instancje dziedziczą ją z obiektu zamiast samego konstruktora. Ale każdy obiekt może być użyty jako prototyp innego ([Object.create() '] (http://ecma-international.org/ecma-262/5.1/#sec-15.2.3.5)), więc własność 'prototype' nie jest w inny sposób niezbędna i na ogół nie zostanie znaleziona. 2) I tak, 'getPrototypeOf()' i '__proto__' będą miały tę samą wartość. Ale "__proto__" jest niestandardowe i zostało wycofane w niektórych przeglądarkach obsługujących. –