ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptのホストオブジェクトとネイティブオブジェクトの違いは何ですか

JavaScriptのホストオブジェクトとネイティブオブジェクトの違いは何ですか

青灯夜游
青灯夜游オリジナル
2021-07-06 14:45:003870ブラウズ

違い: ネイティブ オブジェクトは、ホスト環境から独立した ECMAScript 実装によって提供されるオブジェクト、つまり ECMA-262 によって定義されたクラス (参照型) ですが、ホスト オブジェクトは ECMAScript によって実装されたホスト環境によって提供されるオブジェクトです。 、すべての非ネイティブ オブジェクトはホスト オブジェクトです。

JavaScriptのホストオブジェクトとネイティブオブジェクトの違いは何ですか

このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

組み込み (Build-in) オブジェクトとネイティブ (Naitve) オブジェクトの違いは、前者は常にエンジンの初期化フェーズ中に作成されるオブジェクトであり、後者のサブセットであるのに対し、後者には次のものが含まれることです。一部のオブジェクトは実行時に動的に作成されます。

エンジン拡張オブジェクトは、それほど大きくないセットです。一般に、それらは比較的確実です。これらは、エンジンのネイティブ オブジェクトにも属します (ただし、ECMA 仕様のネイティブ オブジェクトには属しません)。

ホスト オブジェクトはエンジンのネイティブ オブジェクトではなく、ホスト フレームワークによって何らかのメカニズムを通じて JavaScript エンジンに登録されたオブジェクトです。

一部のホストは、提供するオブジェクト/コンストラクターを「ネイティブ オブジェクト」と呼びます。たとえば、Internet Explorer 7 は、ネイティブ オブジェクトを提供する XMLHttpRequest() を呼び出します。対照的に、その中では、「new」などのメソッドを通じて作成されたオブジェクトが呼び出されます。以前のバージョンの の ActiveXObject('Microsoft.XMLHTTP')」。この場合、読者は「ホストのネイティブ オブジェクト」と「エンジンのネイティブ オブジェクト」の違いに注意する必要があります。

1. ネイティブ オブジェクト

ECMA-262 では、ネイティブ オブジェクトを「ホスト環境から独立した ECMAScript 実装によって提供されるオブジェクト」と定義しています。

Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError、ActiveXObject (サーバー)、Enumerator (コレクション走査クラス)、RegExp (正規表現)

このことから、ネイティブオブジェクトとは、簡単に言うとECMA-262で定義されたクラス(参照型)であることが分かります。

2. 組み込みオブジェクト

ECMA-262 では、組み込みオブジェクトを「ホスト環境から独立した ECMAScript 実装によって提供されるすべてのオブジェクト」として定義しています。 ECMAScript プログラムの実行が開始されるとき。」これは、開発者が組み込みオブジェクトを明示的にインスタンス化する必要がなく、すでにインスタンス化されているということを意味します。

また、「ホスト環境からも独立」しています。定義によると、「組み込みオブジェクト」と「ネイティブオブジェクト」の違いを区別するのは難しいようです。 ECMA-262 では、Global と Math という 2 つの組み込みオブジェクトのみが定義されています (これらはネイティブ オブジェクトでもあり、定義上、すべての組み込みオブジェクトはネイティブ オブジェクトです)。

それは理解できます。組み込みオブジェクトはネイティブ オブジェクトの一種です。含まれる 2 つのオブジェクトのうち、Math オブジェクトをよく使用しますが、この Global オブジェクトとは何でしょうか?

Global オブジェクトは ECMAScript の最も特殊なオブジェクトです。実際には、このオブジェクトはまったく存在しないからです。 ECMAScript には独立した関数はなく、すべての関数はオブジェクトのメソッドである必要があります。

isNaN()、parseInt()、および parseFloat() メソッドと同様に、これらはすべて関数のように見えますが、実際にはすべて Global オブジェクトのメソッドです。 Global オブジェクトのメソッドはこれで終わりではありません。

3. ホスト オブジェクト

「ホスト オブジェクト」とは何ですか? ECMAScript の「ホスト」は、もちろん Web ページの実行環境、つまり「オペレーティング システム」と「ブラウザ」です。すべての非ネイティブ オブジェクトはホスト オブジェクト、つまり ECMAScript によって実装されたホスト環境によって提供されるオブジェクトです。

すべての BOM オブジェクトと DOM オブジェクトはホスト オブジェクトです。 「ホスト」環境ごとに異なるコンテンツが表示されるためです。実際、率直に言うと、未定義オブジェクトのほとんどは ECMAScript プログラムによって作成されたオブジェクトであるため、ECMAScript によって正式に定義されていないオブジェクトはホスト オブジェクトに属します。 TML DOM は、W3C 標準 (HTML Document Object Model、Document Object Model for HTML の略称) です。

HTML DOM は、HTML の標準オブジェクトのセットと、HTML ドキュメントにアクセスして処理するための標準メソッドを定義します。

DOM を通じて、すべての HTML 要素と、それに含まれるテキストおよび属性にアクセスできます。コンテンツは変更および削除でき、新しい要素を作成することもできます。

[関連する推奨事項: JavaScript 学習チュートリアル]

以上がJavaScriptのホストオブジェクトとネイティブオブジェクトの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。