質問: function remove () { if (this.parentNode) { this.parentNode.removeChild(this); } }; } ``` ### ChildNode#remove の定義場所はどこが正しい? MDNにある Polyfill コードでは `Element.prototype.remove` が定義されています。 * ChildNode.remove() - Web API インターフェイス | MDN DOM Standard の仕様書側では Interface ChildNode で定義されており、Element との関連性がわかりませんでした。 * 4.2.8. Mixin ChildNode - DOM Standard * DOM Standard 日本語訳 実際のところ、`ChildNode#remove` はどこに定義するのが正しいのでしょうか。
回答: Element - Web APIs | MDN では > > Methods > > > Inherits methods from its parents Node, and its own parent, EventTarget, and implements those of ParentNode, ChildNode, NonDocumentTypeChildNode, and Animatable. > > > とあるので、本来ならChildNode interfaceで定義すべきでしょう。 が、あくまでinterfaceであるため、実装はElementで行うのが無難なんじゃないでしょうか?