Object.getPrototypeOf(obj)はどのように機能しますか?
定義に従って、Object.getPrototypeOf(obj)は、オブジェクトのプロトタイププロパティを返すか、別の方法でobj.constructor.prototypeと同じである必要があります。
newで作成されたオブジェクトは、コンストラクター関数のprototypeプロパティの値をプロトタイプとして使用します。
例を見てみましょう:
>element = document.getElementById("test")
>a = Object.getPrototypeOf(element)
HTMLDivElement
HTMLDivElementが要素のプロトタイプであるとしましょう。
>a.constructor.prototype
HTMLDivElement
したがって、a.constructor.prototypeはHTMLDivElementであるため、Object.getPrototypeOf(a)はHTMLDivElementを返す必要がありますが、HTMLElementを返します。getPrototypeOf()の定義と完全に混同しています。
>b = Object.getPrototypeOf(a)
HTMLElement ---->なぜですか?a.constructor.prototypeはHTMLDivElementです
実際には、プロトタイプのprotoプロパティを返していますが、getPrototypeOf()の定義に従って間違っているのではないでしょうか。
>a.constructor.prototype.__proto__
HTMLElement