A | B | C | D | E | F | G | H | I | J | L | M | N | O | P | R | S | T | U | W |

Index: O

Object Object.assign() Object.constructor
Object.eval() Object.toString() Object.unwatch()
Object.valueOf() Object.watch() open()
opener Option Option.defaultSelected
Option.index Option.selected Option.text
Option.value



Objectクラス ・・・ すべてのJavaScriptオブジェクトの機能を含むスーパークラス

対応バージョン

コアJavaScript 1.0、ECMA-262、JavaScript 1.1 とNavigator 4で機能拡張

コンストラクタ


new Object();
new Object(value);

引数

valueJavaScript1.1の場合のみ有効で、省略可能な引数。オブジェクトに変換するJavaScript基本型値(数値、論理値、文字列、関数)を表します。

リターン値

引数としてvalueを指定しなかった場合、コンストラクタはプロパティのない新しく生成されたオブジェクトを返します。基本型値を指定した場合、コンストラクタは指定された基本型値に対応するオブジェクトラッパー(Number、Boolean、String)を返します。

プロパティ

constructor
オブジェクトを生成したコンストラクタへの参照。読み出し専用。このプロパティは、JavaScript 1.1で追加されました。

メソッド

assign()
このメソッドを定義しておくと、JavaScriptの代入演算子(=)を実行するときにこのメソッドが使われます。Navigatorのみでサポート。使用は推奨されていません。
eval()
指定されたオブジェクトの文脈で、JavaScriptコード(文字列)を評価します。Navigator 3でサポート。使用は推奨されていないので、代わりにグローバル関数のeval()を使用してください。
toString()
このメソッドを定義しておくと、オブジェクトを文字列に変換するときにこのメソッドが使われます。
unwatch()
監視点(watchpoint)を削除します。Navigator 4でサポート。
valueOf()
指定されたオブジェクトに対応する基本型値があればその値を返します。Objectオブジェクトの場合、そのオブジェクト自身を返します。NumberやBooleanなどのオブジェクトの場合、指定されたオブジェクトに対応する基本型値が返されます。このメソッドはJavaScript1.1で追加されました。
watch()
監視点を設定します。監視点を設定すると、指定した名前のプロパティの値が変更されると、指定した関数が実行されます。Navigator 4でサポート。

解説

Objectクラスは、JavaScript言語にあらかじめ組み込まれているデータ型の1つです。Objectクラスは、ほかのすべてのJavaScriptオブジェクトに対する「スーパークラス」に相当します。したがって、Objectオブジェクトのメソッドはほかのオブジェクトのメソッドとしても使えます。Objectオブジェクトの振る舞いはほかのオブジェクトでもすべて共通です。オブジェクトの基本的な振る舞いについては「8章」を参照してください。
先ほど挙げたObjectオブジェクトのtoString()メソッドとvalueOf()メソッドは、あらかじめ定義されていないメソッドがあることに注意してください。これらのメソッドは、あなたが任意のオブジェクトに対して定義できるメソッドなのです。必要なときにJavaScriptシステムがこれらのメソッドを呼び出して指定されたオブジェクトを文字列や基本型値に変換します。

関連項目

ArrayBooleanFunctionFunction.prototypeNumberString、8章



Object.assign()メソッド ・・・ 代入演算子のオーバーロード

対応バージョン

コアNavigator 3(使用は推奨されていないので、Object.watch()を使用してください)

コーディング形式

object.assign(value)

引数

value代入する値。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.constructorArrayになります。

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)

引数

code	評価するJavaScript式あるいは実行する文を含む文字列。

リターン値

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
ウォッチの対象からはずされるオブジェクトのプロパティ。

解説

オブジェクトのプロパティ名であるpropnameに対してunwatch()メソッドを呼び出すと、watch()メソッドで以前に登録された監視点ハンドラ関数を解除します。



Object.valueOf()メソッド ・・・ 指定したオブジェクトの基本型値

対応バージョン

コアJavaScript 1.1、ECMA-262

コーディング形式

object.valueOf(typehint);

引数

typehint返される値のタイプについてのヒントを提供するオプションの文字列引数。Navigator 4では、あるオブジェクトのvalueOf()メソッドが呼び出されると、「boolean」、 「string」、「number」、さらに「object」などの文字列のいずれかを渡してそのオブジェクトがどんな種類の値に変換されるべきか示唆する場合もあります。この引数は、ECMA‐262標準には含まれず、IEやNavigator 2や3ではサポートされません。

リターン値

もしあればobjectに対応する基本型値。なければそのオブジェクト自身。

解説

あるオブジェクトの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)

引数

propnameウォッチの対象となるプロパティ名。
handler指定されたオブジェクトのpropnameプロパティに値が設定されると呼び出される関数。

解説

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)

引数

textOptionオブジェクトのtextプロパティに相当する文字列(省略可能)。
valueOptionオブジェクトのvalueプロパティに相当する文字列(省略可能)。
defaultSelectedOptionオブジェクトのdefaultSelectedプロパティに相当する論理値(省略可能)。
selectedOptionオブジェクトのselectedプロパティに相当する論理値(省略可能)。

プロパティ

OptionオブジェクトはHTMLElementのプロパティを継承すると共に、次のプロパティを定義します。

defaultSelectedデフォルトとしてこのオプションが選択されているかどうかを示す論理値(読み出し専用)。SELECTED属性で設定します。
indexオプション配列の中でこのオプションのインデックスを示す整数(読み出し専用)。
selectedこのオプションが現在選択されているかどうかを示す論理値(読み書きが可能)。初期値はSELECTED属性で設定します。
textオプションの説明を書いたテキスト。<OPTION>タグの後ろに記述されたプレーンテキスト(HTML形式ではない)。JavaScript1.1の場合は読み書きの両方が可能です。JavaScript1.1より前のバージョンでは、読み出し専用です。
value読み書きが可能な文字列。このオプションが選択された場合、フォームの送信時にこの文字列もいっしょにサーバへ送られます。初期値はVALUE属性で設定します。

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[]の項を参照してください。

関連項目

SelectSelect.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プロパティをチェックしたほうが簡単です。

関連項目

SelectSelect.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でなければなりません。



トップページに戻る