4

バックグラウンド

まず、違いを理解するための SO-search について言及したいと思います。

  • (ホスト オブジェクト) DOM-Javascript オブジェクト( var domJSobj = document.createElement("div")) および
  • (ネイティブ オブジェクト)純粋な Javascript オブジェクト( var pureJSobj = {})

行われましたが、まだ多くを見つけたとは言えません (すばらしいのは、この質問と回答があるということです: what-is-the-difference-between-native-objects-and-host-objects )。ここで何かを見落としているかもしれませんが、コメントをいただければ幸いです。

ここで質問する前に、 MDN Mozillas Docu on DOM and Javascriptも読んでアイデアを得ました。

質問

少し「接着剤を使わない」ので、Javascript コンソールで遊び始めたところ、最初の落とし穴に遭遇しました ((ホスト オブジェクト) には当てはまらない (ネイティブ オブジェクト) の動作に関する期待から生じた)。明確にするために、一見すると多くのことが似ているように見えます。

var nativeObject = {}; //新しいオブジェクトを作成
nativeObject.someAttribute = "何か"; //属性を設定する
nativeObject.someMethod = function() { return this.someAttribute; } // メソッドを定義する

console.log(nativeObject.someAttribute); // "なにか"
console.log(nativeObject.someMethod()); // "なにか"

var hostObject = document.createElement("div"); // "div" 1 種類のホスト オブジェクトを作成する
hostObject.someAttribute = "何か"; //属性を設定する
hostObject.someMethod = function() { return this.someAttribute; } // メソッドを定義する

console.log(hostObject.someAttribute); // "なにか"
console.log(hostObject.someMethod()); // "なにか"

私にとっては、(ホストオブジェクト)は(ネイティブオブジェクト)と同じくらい使いやすく、すでに多くのものを持っているように思えます:

console.log(nativeObject.tagName); // 未定義
console.log(hostObject.tagName); // "DIV"

すべての優れた DOM 属性が既に存在するためです。

私の質問は、単純な (ネイティブ オブジェクト) の代わりに (ホスト オブジェクト) を (誤って) 使用することにした場合に発生する可能性のある落とし穴 (考えられるトラブル) のリストについてです。

すでに私はこれを認識しています:

  • 速度に関する考慮事項 (ネイティブ オブジェクトはより迅速に作成されると想定しています)
  • メモリ使用量の考慮事項 (ここでもネイティブ オブジェクトの方が優れている可能性があります)

とにかく、私はまだ多くの問題を見ていません (これらの考慮事項がケースでそれほど重要でない場合)。これが質問の理由です。

この質問への答えは、1 つの潜在的な落とし穴を示したり伝えたりするのが最善だと思います。つまり、(ネイティブ オブジェクト) よりも (ホスト オブジェクト) を使用することが悪い、または不可能なケースまたは状況です。このように、この質問は、実際の事実に基づいて伝えられ、単なる意見に基づく議論を誘発しないという SO 品質要件に準拠する必要があります。

4

1 に答える 1