A | B | C | D | E | F | G | H | I | J | L | M | N | O | P | R | S | T | U | W |
Objectクラス ・・・ すべてのJavaScriptオブジェクトの機能を含むスーパークラス 対応バージョンコアJavaScript 1.0、ECMA-262、JavaScript 1.1 とNavigator 4で機能拡張コンストラクタnew Object(); new Object(value);
プロパティ
メソッド
解説Objectクラスは、JavaScript言語にあらかじめ組み込まれているデータ型の1つです。Objectクラスは、ほかのすべてのJavaScriptオブジェクトに対する「スーパークラス」に相当します。したがって、Objectオブジェクトのメソッドはほかのオブジェクトのメソッドとしても使えます。Objectオブジェクトの振る舞いはほかのオブジェクトでもすべて共通です。オブジェクトの基本的な振る舞いについては「8章」を参照してください。先ほど挙げたObjectオブジェクトのtoString()メソッドとvalueOf()メソッドは、あらかじめ定義されていないメソッドがあることに注意してください。これらのメソッドは、あなたが任意のオブジェクトに対して定義できるメソッドなのです。必要なときにJavaScriptシステムがこれらのメソッドを呼び出して指定されたオブジェクトを文字列や基本型値に変換します。 関連項目Array、Boolean、Function、Function.prototype、Number、String、8章
Object.assign()メソッド ・・・ 代入演算子のオーバーロード 対応バージョンコアNavigator 3(使用は推奨されていないので、Object.watch()を使用してください)コーディング形式object.assign(value)
解説JavaScriptコードの中でassign()メソッドを明示的に呼び出すことは、通常ありません。その代わりに特定のオブジェクトに対してassign()メソッドを定義しておくと、そのオブジェクトに値を代入するときにシステムが自動的に呼び出します。例えば、オブジェクトoに対してassign()メソッドを定義しておきます。次の代入文を見てください。 o = value; この式は、以下に示す関数呼び出しに変換されます。 o.assign(value); assign()メソッドは引数を1個だけ取ります。この引数は必ず代入演算子の右側の値と同じです。このメソッドが呼び出されると、指定されたオブジェクトは代入演算子の左側の値を参照します。このメソッドの本体が何らかの方法でオブジェクトにvalueを「代入」します。 assign()はNavigatorのみでサポートされており、移植性はありません。Navigator4では使用が推奨されていませんので、watch()を使うようにしてください(ただし、このメソッドも移植性はありません)。
Object.constructorプロパティ ・・・ オブジェクトのコンストラクタ関数 対応バージョンコアJavaScript 1.1、ECMA-262コーディング形式object.constructor解説任意のオブジェクトのconstructorプロパティは、指定されたオブジェクトのコンストラクタとして使用された関数を参照します(読み出し専用)。例えば、Array()コンストラクタで配列aを生成すると、a.constructorはArrayになります。a = new Array(1,2,3); // オブジェクトを生成する。 a.constructor == Array // 評価結果はtrueになる。constructorプロパティの代表的な使い方は、未知のオブジェクトの型を判定することです。ある未知の値が与えられたとき、typeof演算子を使って基本型値であるかそれともオブジェクトであるかを調べます。オブジェクトであれば、constructorプロパティを使ってオブジェクトの型を調べます。例えば、配列であるかどうかを調べる関数を以下に紹介しましょう。 function isArray(x) { return ((typeof x == "object") && (x.constructor == Array)); }ただし、このやり方ですべてのオブジェクト型を判定できるわけではありません。Navigator 3の場合、例えばWindow()コンストラクタがなく、また、WindowオブジェクトのconstructorプロパティはObjectになっています。
Object.eval()メソッド ・・・ 文字列のJavaScriptコードを評価する 対応バージョンコア Navigator 3(Navigator 4では使用が推奨されていません)コーディング形式object.eval(code)
解説eval()は文字列引数code中のJavaScriptコードを実行します。このメソッドは、eval()グローバル関数と同様の振る舞いをしますが、グローバルにコードを評価するのではなく、objectのスコープで評価します。eval()は、グローバル関数としてJavaScript 1.0でもありました。Navigator 3で、これはすべてのオブジェクトの汎用関数となりました。ところが、EMCA-262ではObject.eval()は採用されず、Navigator 4で使用が推奨されなくなりました。実際のところ、Object.eval()はNavigator 4の初期バージョンで廃止され、互換性のためにNavigator 4.02で復活しました。 object.eval(s) Navigator 4.02以降では、上記を次のように置き換えることができます。 with (object) eval(s) 関連項目eval()
Object.toString()メソッド ・・・ オブジェクトの文字列の表記法を定義する 対応バージョンコアJavaScript 1.0、ECMA-262コーディング形式object.toString()
解説通常、toString()メソッドをJavaScriptプログラムから直接呼び出すことはありません。オブジェクトでtoString()メソッドを定義しておけば、必要なときにシステムがこのメソッドを呼び出してオブジェクトを文字列に変換してくれます。オブジェクトが「文字列文脈」で使用されると、JavaScriptシステムはtoString()メソッドを呼び出してオブジェクトを文字列に変換します。例えば、以下に示すように、引数として文字列を期待する関数にオブジェクトを渡すと、そのオブジェクトは文字列に変換されます。 alert(my_object); 以下に示すように、+演算子で文字列の連結をするときにも、オブジェクトは文字列に変換されます。 alert('My object is: ' + my_object); toString()メソッドは引数なしで呼び出されます。リターン値として文字列を返すようにします。意味のある文字列にするためには、toString()メソッドを呼び出したときに使用したオブジェクトの値に基づいて文字列を決定するようにしてください。 JavaScriptでカスタムのクラス定義する場合、クラスにtoString()メソッドを定義するとよいでしょう。定義しないと、そのオブジェクトはデフォルトのtoString()メソッドをObjectクラスから継承します。このデフォルトのメソッド以下のような形式の文字列を返します。 [object class] ここで、class は該当するオブジェクトのクラスです。「Object」、「String」、「Number」、「Function」、「Window」、「Document」などの値になります。 使用上のヒントと注意toString()メソッドは、JavaScriptプログラムをデバッグする際にきわめて有用です。このメソッドによって、オブジェクトを出力してその値を見ることができるからです。このメリットだけを考えても、自分で作成したすべてのオブジェクトクラスにtoString()メソッドを定義すべきでしょう。toString()メソッドが返す文字列はいくらでも複雑にできます。したがって、このメソッドはデバッグ以外にも使用できます。例えば、History.toString()のようにHTML形式のテキストを返すようにtoString()メソッドを定義することもできます。文字と形式を適切に選択すれば、document.write()を使ってHTMLドキュメントに直接オブジェクトを表す文字列を出力することも可能です。 通常、toString()メソッドはシステムによって自動的に呼び出されますが、手動で呼び出したい場合もあるはずです。例えば、あるオブジェクトを文字列に明示的に変換したい場合、JavaScriptが自動的に行ってくれない場合などです。 y = Math.squt(x); ystr = y.toString();この例では、これらの数値には強制的に変換を実行させるtoString()メソッドが組み込まれています。 また、JavaScriptが自動的に変換を行う場合でも、toString()メソッドを呼び出す場合もあります。以下のようにtoString()メソッドを明示的に使うことによって、コードを分かりやすくすることができるのです。 alert(my_object.toString()); 通常、1つのオブジェクトのみにtoString()メソッドを定義するのは意味がありません。したがって、通常はこのメソッドをプロトタイプのオブジェクトに割り当て、クラスのすべてのオブジェクトでこれを使用できるようにします。
Object.unwatch()メソッド・・・監視点を消去する 対応バージョンコアNavigator 4コーディング形式object.unwatch(propname)
解説オブジェクトのプロパティ名であるpropnameに対してunwatch()メソッドを呼び出すと、watch()メソッドで以前に登録された監視点ハンドラ関数を解除します。
Object.valueOf()メソッド ・・・ 指定したオブジェクトの基本型値 対応バージョンコアJavaScript 1.1、ECMA-262コーディング形式object.valueOf(typehint);
解説あるオブジェクトのvalueOf()メソッドは、そのオブジェクトに関連した基本型値があればその値を返します。ObjectオブジェクトやクライアントサイドJavaScriptオブジェクトのように基本型値がない場合は、オブジェクト自身を返します。しかし、Numberオブジェクトの場合、valueOf()メソッドはNumberオブジェクトに相当する基本型の数値を返します。同様に、Booleanオブジェクトの場合はBooleanオブジェクトに相当する論理値、Stringオブジェクトの場合はStringオブジェクトに相当する文字列をそれぞれ返します。 通常、valueOf()メソッドを自分で呼び出す必要はありません。基本型値が期待される場面でオブジェクトが使われると、JavaScriptが自動的に呼び出すからです。このようにvalueOf()メソッドが自動的に呼び出されるので、通常は基本型値とオブジェクトの見分けはできません。typeof演算子を使用すると、文字列とStringオブジェクト関数を見分けることができます。しかし、実際にはどちらもJavaScriptコードで同じように使用できます。 Numberオブジェクト、Booleanオブジェクト、Stringオブジェクトの場合、valueOf()メソッドはこれらの「ラッパー」オブジェクトをそれぞれに対応する基本型値に変換します。数値、論理値、文字列、関数の引数を指定してObject()コンストラクタを呼び出すと、先ほどと逆方向の変換が行われます。基本型値をそれぞれに対応するラッパーオブジェクトに変換します。このような基本型値からオブジェクトへの変換はJavaScriptが自動的に行うので、このようなことをしたいためにObject()コンストラクタを呼び出すことはめったにないでしょう。 自分で作成したオブジェクトに対して専用のvalueOf()メソッドを定義したいこともあるでしょう。そこで、複素数(実数と虚数のこと)を示すJavaScriptオブジェクト型を定義する場合について考えてみましょう。このオブジェクト型に関連して、複素数の加算や乗算などを実行するメソッドを定義します。しかし、同時に虚数部分を廃棄して普通の実数と同じように処理したいとします。そのような場合は次のようにします。 Complex.prototype.valueOf = new Function("return this.real"); Complexオブジェクト用に定義したvalueOf()メソッドによって、複素数オブジェクトをMath.sqrt()メソッドに渡し、実数部分の平方根を計算することができます。 さらに、Navigator 4のみを対象とする場合、typehint 引数を利用し、複素数オブジェクトが異なる状況で使われた場合、異なる基本型の値を返すようなメソッドを実装することができます。例えば、その実数部分を返すことによって複素数オブジェクトを数値に変換するvalueOf()メソッドや、実数部分の、あるいは虚数部分がゼロ以外であるかどうかを確認することによって、論理値に変換するvalueOf()メソッドなどを書くことができます。 関連項目Object.toString()
Object.watch()メソッド・・・監視点(ウォッチポイント)を設定する 対応バージョンコアNavigator 4コーディング形式object.watch(propname, handler)
解説objectオブジェクトのwatch()メソッドによって、propnameというプロパティに値が設定されるたびに呼び出されるハンドラ関数を指定できます。ハンドラ関数には、3つの引数が渡されます。第1の引数は、変更されたプロパティの名前です。第2の引数は、そのプロパティの現在の値です。第3の引数は、プロパティに与えられる新しい値です。このハンドラのリターン値がプロパティの新しい値になります。したがって、例えばハンドラ関数を使えば、常に2番目の引数を返すようにすることによって、プロパティの変更を回避できます。 watch()メソッドは、読み出し専用のプロパティの作成やプロパティに特殊な振る舞いをさせるために使用できますが、移植性はありません。したがって、このメソッドはデバッグの際に使うのがもっとも有効な使い方です。
open()メソッド ・・・ Window.open()を参照
opener ・・・ Window.openerを参照
OptionオブジェクトSelectボックスの選択肢 対応バージョンクライアントサイドJavaScript 1.0、JavaScript 1.1で機能拡張継承元HTMLElementコーディング形式select.options[i]コンストラクタJavaScript 1.1では、OptionオブジェクトはOption()コンストラクタによって動的に作成できます。new Option(text, value, defaultSelected, selected)
プロパティOptionオブジェクトはHTMLElementのプロパティを継承すると共に、次のプロパティを定義します。
HTML構文Optionオブジェクトは、<FORM>タグ内の<SELECT>タグ内の<OPTION>タグで生成します。<SELECT>タグ内には複数の<OPTION>タグが指定できます。<FORM ...> <SELECT ...> <OPTION [ VALUE="value" ] フォーム送信時に渡す値。 [ SELECTED ] > 初期値として選択されているかどうか。 plain_text_label 表示テキスト。 [ </OPTION> ] ... </SELECT> ... </FORM> 解説OptionオブジェクトはSelectオブジェクト内に表示する1つのオプション(選択肢)に相当します。Optionオブジェクトのプロパティは、デフォルト値、現在の選択内容、Selectオブジェクトを保持するoptions[]配列のインデックス、表示テキスト、フォーム送信時にサーバに渡す値などを示します。このオプションで表示するテキストは、<OPTION>タグの外側で指定しますが、そのテキストはHTMLタグを持たず、整形もしてないプレーンテキストでなければならないことに注意してください。これは、HTML形式をサポートしていないリストボックスやドロップダウンメニューで正しく表示されるようにするためです。 JavaScript1.1では、Selectオブジェクト内に表示するOptionオブジェクトは、Option()コンストラクタで動的に生成できます。新たに生成したOptionオブジェクトをSelectオブジェクトのオプションリストに追加するには、変数s.options[options.length]に代入します。詳細はSelect.options[]の項を参照してください。 関連項目Select、Select.options[]
Option.defaultSelectedプロパティ ・・・ デフォルトの選択肢 対応バージョンクライアントサイドJavaScript 1.0コーディング形式option.defaultSelected解説defaultSelectedプロパティは、Optionオブジェクトを保持するSelectオブジェクトを生成したときに、初期値としてこのOptionオブジェクトoptionを選択状態にするかどうかを示す論理値(読み出し専用)です。Resetオブジェクトは、このプロパティを使ってSelectオブジェクトを初期値にリセットします。したがって、defaultSelectedプロパティを利用すれば同様のコードを記述できます。
Option.indexプロパティ ・・・ オプションが配列に格納されている位置 対応バージョンクライアントサイドJavaScript 1.0コーディング形式option.index解説indexプロパティは、Optionオブジェクトを保持するSelectオブジェクトのoptions[]配列に格納されているOptionオブジェクトoptionの位置を示すインデックスです。この配列の先頭に格納されているOptionオブジェクトのインデックスは0で、このオブジェクトのindexプロパティは0です。その次のOptionオブジェクトのインデックスは1というように続きます。
Option.selectedプロパティ ・・・ 現在の選択状態 対応バージョンクライアントサイドJavaScript 1.0コーディング形式option.selected解説selectedプロパティは、Selectオブジェクト内でOptionオブジェクトが現在選択されているかどうかを示す論理値(読み書きが可能)です。このプロパティを使うと特定のオプションが現在選択されているかどうかを調べることができます。このプロパティにtrueを設定することで特定のオプションを選択したり、falseを設定することで選択状態を解除したりすることも可能です。このやり方でオプションの選択とその解除をする場合、Select.onchange()イベントハンドラは呼び出されないことに注意してください。使用上のヒントと注意Selectオブジェクト内でどのオプションが選択されているかを知るには、Select.options[]配列の各項目ごとにselectedプロパティをチェックします。複数の選択が許可されていない(<SELECT>タグにMULTIPLE属性が設定されていない)場合は、SelectオブジェクトのselectedIndexプロパティをチェックしたほうが簡単です。関連項目Select、Select.selectedIndex
Option.textプロパティ ・・・ オプションのラベル 対応バージョンクライアントサイドJavaScript 1.0、JavaScript 1.1では読み書きが可能コーディング形式option.text解説Optionオブジェクトのtextプロパティは、ユーザに見せるテキスト文字列のことです。このプロパティの初期値は、</OPTION>タグのあとから次の<OPTION>タグの前まで、あるいは最後の</SELECT>タグの直前までにあるHTMLタグのないプレーンテキストです。JavaScript1.0の場合、textプロパティは読み出し専用ですが、JavaScript1.1の場合は読み書きの両方が可能です。このプロパティに新しい値を設定することで、Selectオブジェクト内のオプションとして表示するテキストを変更できます。ただし、このやり方には1つ注意すべきことがあります。オプションラベルを変更してもSelectオブジェクトは横に広がらないことです。オプションオブジェクトを大きくしなければならない場合、右側が見えなくなるかもしれないので、右側に重要な情報を置いてはいけません。
Option.valueプロパティ ・・・ フォーム送信時に渡す値 対応バージョンクライアントサイドJavaScript 1.0コーディング形式option.value解説Optionオブジェクトのvalueプロパティは読み書きが可能な文字列です。optionが選択されている場合、フォーム送信時にWebサーバにこのテキストが渡されます。valueプロパティの初期値は、<OPTION>タグのVALUE属性で設定します。フォームをクライアントサイドJavaScriptで使用するのではなく、サーバに送る場合はSelectオブジェクトが保持する個々のOptionオブジェクトを識別できるvalueでなければなりません。 |