ECMAScript / ECMA-262 Edition 5.1ベースのJavaScript文法
Globalオブジェクトは、実質、JavaScriptの一番外側にあるオブジェクトという位置づけにあるトップレベルの内部オブジェクトであり、JavaScriptの文法上は、Globalオブジェクト自体には、アクセスしない( Global.property のようにしない)ことが前提で new 式によるインスタンス生成や関数としての利用はできず、基本的には、コーディングによるアクセスはできません。
その代わり、値プロパティ、URI操作関数(URI操作メソッド)プロパティ、コンストラクタプロパティというGlobalオブジェクトに属するメソッドを含む各種プロパティを利用する際には、直接指定します。
ちなみにECMA-262 Edition 5.1 の仕様書 15.1 Globalオブジェクトには、以下の内容が記載されています。
この仕様の中で定義したプロパティについての追記としては、Globalオブジェクトは、オプションでホスト定義のプロパティを持つ場合があります。 これは、Globalオブジェクトがそれ自身である値を持つプロパティを含む場合があるということであり、例えば、HTMLドキュメントオブジェクトモデルでは、Globalオブジェクトのwindowプロパティは、Globalオブジェクト自身です。
つまり、オプションとしてWeb(ブラウザ)環境( ホスト定義 )上においては、DOM / Document Object Model 仕様上、 window が最上位に当たり、ECMAScriptでは、 window (プロパティ)をGlobalオブジェクトのプロパティとして持つことが可能で、それは、「Globalオブジェクト自身」ということなので window は、Globalオブジェクトであるということになります。
値プロパティ | |
---|---|
NaN | Not a Number (数字ではない)値 |
Infinit | 無限大の値 |
undefined | 未定義の値 |
関数プロパティ( === メソッド) |
---|
eval () | ECMAScriptのコード文字列として妥当か否かを評価し、他のいかなるオブジェクトでもなく文字列として妥当な文字列であれば、それを返し、文字列が式を構成していれば式を実行。(数値による)演算式については、そもそも自動的に実行される為、evalの使用は不要且つ使用しないことが推奨される。 尚、JSONを扱う際などネットワークを介す場合は不適切なコードを挿入されるぜい弱性・危険性があるのでセキュリティ上、要注意。 |
parseInt () | 第1引数に文字列(オプションとして第2引数に0~fの16種の数値指定による基数(進数)、省略した場合、a(=10))を取り、文字列を整数値に変換。解析不能の場合、NaN、途中まで解析可能な場合は、そこまでの数値を返す。 |
parseFloat () | 文字列を引数に取り、浮動小数値に変換。解析不能の場合、NaN、途中まで解析可能な場合は、そこまでの数値を返す。 |
isNaN () | 数値を引数に取り、NaNか否かを判定(NaNならtrue、それ以外はfalse) |
isFinite () | 数値を引数に取り、有限の値か否かを判定(内部的な数値変換の結果、 NaN、 +∞、 -∞ である場合、false、それ以外は、true) |
JavaやC++では、クラス内にある関数をメソッドと呼びますが、JavaScriptでは、関数をプロパティとして持つことができ、そのプロパティである関数を指してメソッドと呼び、それ以外のケースでは関数と呼ぶことがあります。
URI操作関数プロパティ |
---|
decodeURI () | encodeURI ()で符号化されたURIを復号化。 |
decodeURIComponent () | encodeURIComponent ()されたデータを復号化。 |
encodeURI () | 引数のURIを UTF-8 エンコード方式による1~4つのエスケープシーケンスに符号化。予約語など一部符号化されない文字もある。 |
encodeURIComponent () | 引数のテキストを UTF-8 エンコード方式による1~4つのエスケープシーケンスに符号化。encodeURI ()でエスケープしない文字も符号化。 |
unescape () | escape ()で符号化されたテキストデータを復号化。 |
escape () | 引数であるテキストデータを符号化。 |
unescape () / escape () メソッドは、文字コードがASCII以外の場合、うまく動作しない可能性があるといった理由も含め、メインの仕様からは外れ、代替可能なその他のメソッドの使用が推奨されますが、互換性を加味した追加プロパティとして残されています。
メソッドについては、更にMathオブジェクトにおける数学関数やDateオブジェクトにおける日付関数を始めとして各種オブジェクトごとに多くのメソッドがあります。
Globalオブジェクトには、MathとJSONを除き、コンストラクタプロパティがあり、その振る舞いは、コンストラクタごとに異なります。
コンストラクタプロパティ | ||
---|---|---|
コンストラクタ | 関数としてコール | new 式 |
Date ( ) | 日付及び現在の時間をUTCで表す文字列を返す | インスタンス生成 |
RegExp ( ) | 第1引数が正規表現式、第2引数がundefinedである場合、引数をそのまま返し、それ以外は new RegExp( )と等価 | |
Object ( ) | 引数の値を型変換 | |
String ( ) | ||
Boolean ( ) | ||
Number ( ) | ||
Function ( ) | new 式と等価 | |
Array ( ) | ||
Error ( ) | ||
RangeError ( ) | ||
ReferenceError ( ) | ||
SyntaxError ( ) | ||
TypeError ( ) | ||
URIError ( ) | ||
EvalError ( ) | ECMAScript第5.1版では未使用、以前の版との互換性の為、保持 |