javascriptで例えばspanタグを追加しようと思っても、("span")とか(span)と書いてもエラーになり、
var a = createElement("span");
などとしてelementnodeにすることでメソッドに渡したりプロパティが参照できるようにしたりできるのでそういうことなのかと思いました。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
Node
仕様をざっくり確認しましたが、明確に「Nodeとは何か」について言及されていませんでした。
しかしながら、JavaScriptにおける Node とは、次の2つの条件を満たすものと判断して良いと私は考えます。
- Object 型である
- プロトタイプチェーン上に
Node.prototype
が存在している
JavaScript
1'use strict'; 2function isNode (arg) { 3 var prototype; 4 5 if (Object(arg) !== arg) { // Object 型ではないなら 6 return false; 7 } 8 9 prototype = arg; 10 11 while (prototype = Object.getPrototypeOf(prototype)) { // プロトタイプチェーンを辿る 12 if (prototype === Node.prototype) { // Node.prototype が存在するなら 13 return true; 14 } 15 } 16 17 return false; 18} 19 20console.log(isNode(document.createElement('p'))); // true 21console.log(isNode(document)); // true 22console.log(isNode(document.defaultView)); // false 23console.log(isNode(document.createTextNode(''))); // true 24console.log(isNode(document.createComment(''))); // true 25console.log(isNode(document.createAttribute(''))); // true
window (document.defaultView) の扱いについて
歴史的な理由で後から拡張された window (document.defaultView) はプロトタイプチェーン上に Node.prototype が存在しません。
window は DOM の仕様内に存在するので「DOM オブジェクト」の一部といえますが、「Node ではない」と解釈できます。
正式名称が「Document Object Model (DOM)」とあるように、DOMとは document をルートノードとしたオブジェクトモデルを指しています。
UI Events(旧称 DOM Events)ではバブリングフェーズのイベント伝播先として、document の次に window まで伝播されるように拡張されましたが、これは例外的な措置だと私は思います。
HTML DOM
「HTML DOM」の用語は defghi1977 さんの下記回答が初出だと思いますが、私としては仕様書上に「HTMLDOM」の語句が確認できない為に「HTML DOM」は俗語(正式名称ではなく、便宜上の為に著者が作成した用語)と解釈しています。
HTMLDOMの名称に近い仕様として「Document Object Model (DOM) Level 2 HTML」がありますが、この仕様はHTMLで規定された各々の要素に関する仕様であり、DOM Core や DOM Events が含まれない限定的な仕様です。
- [Document Object Model (DOM) Level 2 HTML
Specification](https://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/)
defghi1977 さんはもっと広い意味でDOMの学習を勧めているように読めますので、あまり「HTML DOM」の用語にとらわれない方が良いと私は思います。
なお、DOMの学習を進める事は私も賛成です。
Re: yamagata_user さん
投稿2017/12/10 08:05
総合スコア18166
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/10 13:02
2017/12/10 14:22
2017/12/10 14:39
2017/12/10 14:47
2017/12/10 15:07
2017/12/12 13:31
2017/12/12 13:40
2017/12/17 13:52
2017/12/17 13:52