Document Object Model (DOM) - прекрасный пример наследования в JavaScript.
Представьте, что у вас есть div
. Это пример HTMLDivElement
.
var div = document.createElement('div');
div instanceof HTMLDivElement; // -> true
div instanceof HTMLElement; // -> true
div instanceof Element; // -> true
div instanceof Object; // -> true
div
является Объект и включает в себя все методы и свойства, находится в HTMLDivElement.prototype
. Это под __proto___
собственности, но это не значит, что вы должны сделать div.__proto__.insertBefore
для доступа insertBefore
. Это похоже на включение в другие языки.
Иными словами, div.__proto__
указывает на HTMLDivElement.prototype
.
prototype
- Объект. Из-за этого он может иметь свой собственный указатель __proto__
. В этом случае HTMLDivElement
- prototype
- Объект и имеет __proto__
, который указывает на HTMLElement.prototype
, поэтому он включает в себя все методы и свойства. Он идет по этому пути до Object.prototype
, у которого нет указателя __proto__
и поиска.
Я пытался избежать использования ключевого слова new
для объяснения этого. Надеюсь, это поможет ...
Я не думаю, что есть какая-то скрытая ссылка. По крайней мере, не в эти дни. Свойство прототипа - это все, что ему нужно. Также нет никакой разницы между прототипом объекта и прототипом функции. – Jodes
go here: nice read - http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/ –