JavaScript のプロトタイプを理解しています。しかし、prototype プロパティと非表示のプロトタイプ リンクの違いに混乱してしまいます。また、オブジェクトプロトタイプリンクと関数プロトタイプリンクの違いは?
誰かが同じことを示すための非常に基本的な例を提供してくれませんか (主にプロトタイプ リンク/チェーン...オブジェクト プロトタイプ リンクと関数プロトタイプ リンクの両方に関してプロパティを検索する方法など)
JavaScript のプロトタイプを理解しています。しかし、prototype プロパティと非表示のプロトタイプ リンクの違いに混乱してしまいます。また、オブジェクトプロトタイプリンクと関数プロトタイプリンクの違いは?
誰かが同じことを示すための非常に基本的な例を提供してくれませんか (主にプロトタイプ リンク/チェーン...オブジェクト プロトタイプ リンクと関数プロトタイプ リンクの両方に関してプロパティを検索する方法など)
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
はObjectであり、 にあるすべてのメソッドとプロパティを含みますHTMLDivElement.prototype
。プロパティの下にありますが、アクセス__proto___
する必要があるという意味ではありません。他の言語のインクルードのようなものです。div.__proto__.insertBefore
insertBefore
つまりdiv.__proto__
、 を指していHTMLDivElement.prototype
ます。
prototype
オブジェクトです。__proto__
そのため、独自のポインターを持つことができます。この場合、 はオブジェクトであり、を指している があるため、すべてHTMLDivElement
のメソッドとプロパティが含まれます。ポインターと検索スタックがなくなるまで、このパスをたどります。prototype
__proto__
HTMLElement.prototype
Object.prototype
__proto__
new
これを説明するためにキーワードを使用しないようにしました。それが役立つことを願っています...