質問: javascriptにおけるホストオブジェクトは、外部ライブラリ、つまり部外者が特定のファイルを拡張するもので、尚且つ取り換えできてこれが無くても問題なく動作するものと認識しております。 もし上記があっているならば、なぜ外部ライブラリという名称を使わずにホストオブジェクトと呼称するのでしょうか。外部ライブラリ的なものをホストオブジェクトと呼称することに何か意味があるからだと思うのですが。 実行環境によって、このjavascriptを拡張してくれるオブジェクトが変わる、実行環境ごとにグローバルオブジェクトを頂点とする木構造としてホストオブジェクトを受け取る、というところまでは分かりました。 ホストとは、奉仕(サービス)を提供するサーバと同じ意味だと認識しております。ただ、サーバと同じ意味であってもなぜ、外部ライブラリ的なものをホストオブジェクトと呼称するのかという疑問は消えません。 http://wa3.i-3-i.info/word1336.html
回答: まず大前提を、ECMAScript(JavaScriptの規格名称) 5.1の仕様書(第4条)から引用してみます(強調も原文ママ)。 > > ECMAScriptは、ホスト環境内で計算を行ったり、オブジェクトを操作したりするためのオブジェクト指向言語である。(中略) > > **スクリプティング言語**とは、既存のシステムの機能を操作、カスタマイズ、自動化するために使用されるプログラミング言語のことである。 > > > ということで、C言語などのようなプログラミング言語と違ってマシンの上で直接動くのではなく、ブラウザなど**何かしらの環境**の中で動くのが前提となっていて、この「何かしら」に当たるのがホスト環境です。別にネットワーク上の「ホスト」ということでは必ずしもなくて、「サーバホスティング」とか仮想マシンの「ゲスト/ホスト」のように「外側で何かを格納するもの」のような意味合いです。