getElementByIdは〇〇のインターフェース、console.logは〇〇のインターフェースみたいな言い方をしたときはどんな意味になるのでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/09 06:38
2017/12/09 08:57
回答3件
0
DOM Level 2 Core
interface
An interface is a declaration of a set of methods with no information given about their implementation. In object systems that support interfaces and inheritance, interfaces can usually inherit from one another.
インタフェース(interface)
インタフェース は,実装についての情報をもたないメソッドの集合の宣言とする。インタフェース及び継承をサポートするオブジェクトシステムでは,インタフェースは,一般に他のインタフェースから継承できる。
DOM Level 3 Core
interface
An interface is a declaration of a set of methods with no information given about their implementation. In object systems that support interfaces and inheritance, interfaces can usually inherit from one another.
「DOM Level 2 Core」と一言一句同じです。
Web IDL
An interface is a specification of a set of interface members (matching InterfaceMembers). These are the members that appear between the braces in the interface declaration.
interface は、その宣言の波括弧を成す合間に現れる,一連のメンバが成す集合( InterfaceMembers に合致)の仕様である。 これらのメンバは、 interface メンバ と称される。
Element.prototype.innerHTML
innerHTML
は interface Element に属するIDL属性です。
仕様としては下記URLのIDLに記載があります。
plain
1partial interface Element { 2 [CEReactions, TreatNullAs=EmptyString] attribute DOMString innerHTML; 3};
JavaScript としては Element.prototype.innerHTML
にプロパティ(メソッドではない)が存在する事になります。
JavaScript
1console.log(Element.prototype.hasOwnProperty('innerHTML')); // true
Elementとは DOM Interface Objectの一種であり、DOM上でいう要素ノードは必ず、Element が [[Prototype]] 上に存在します。
JavaScript
1var p = document.createElement('p'); 2console.log(p.__proto__ === HTMLParagraphElement.prototype); // true 3console.log(p.__proto__.__proto__ === HTMLElement.prototype); // true 4console.log(p.__proto__.__proto__.__proto__ === Element.prototype); // true
このように、**プロトタイプチェーン(prototype-chain)**の仕組みによって上位プロトタイプに Element.prototype
が存在する為、変数 p は innerHTML を使用できる状態となっています。
Re: yamagata_user さん
投稿2017/12/09 16:21
編集2017/12/10 07:23総合スコア18162
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/09 22:55
2017/12/10 07:25
2017/12/12 12:38
0
JavaScriptに限って言えば(非常に乱暴ですが)慣れるまでインターフェース≒オブジェクトと読み替えて構いません.
NOTE:
正確に言うと「○○オブジェクトは○○インターフェースを実装している」となります.
NOTE:
インターフェースはオブジェクト指向プログラミングでよく出てくる概念なのですが, JavaScriptはオブジェクト指向プログラミング言語としては異端なので, インターフェースという用語にとらわれず, 「そういうものだ」と割り切ったほうが良いです. (用語にこだわって先に進めないほうが問題)
getElementByIdは〇〇のインターフェース、console.logは〇〇のインターフェースみたいな言い方をしたときはどんな意味になるのでしょうか。
少なくとも「getElementByIdは〇〇のインターフェース、console.logは〇〇のインターフェース」という言い方はしません. 必ず, 「getElementByIdはインターフェース○○が持つ(提供している)プロパティである」と言います.
投稿2017/12/12 15:03
総合スコア4756
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/13 13:03
2017/12/13 13:26
2017/12/14 13:36
2017/12/14 14:15
2017/12/14 14:19
0
ベストアンサー
前回の質問で回答に書いた「インターフェースNonElementParentNode」ですが、JavaScriptには「インターフェース」という概念は存在しません。
一方で、HTMLやXMLを制御するためのDOMはJavaScriptの外側で定義されているものなので、「このようなメソッド・プロパティを持つもの」という意味での、仕様定義としてのインターフェースが存在しています。
Javaで実装されたDOMでは、Node
やElement
といったインターフェースが、実際のJavaのインターフェース型として存在しています。
投稿2017/12/09 07:12
総合スコア145183
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/09 09:01
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。