JavaScript 標準ライブラリ Object
出典: フリー教科書『ウィキブックス(Wikibooks)』
- JavaScript > Objectオブジェクト
- JavaScript > Objectオブジェクト
目次 |
[編集] Objectオブジェクト
Object型は、StringやNumber等の他のオブジェクトの下敷きとして用意されている JavaScriptでは他のオブジェクトは、基本的にすべてのデータはObject型を継承している。
[編集] メソッド
[編集] toString()
データを文字列化する。 データをどの様に文字列化するかは、そのオブジェクトごとに違うがObject型のtoStringがそのまま実行される場合にはそのデータのデータ型が何であるかを文字列で返す。
[編集] toLocaleString()
基本的にtoStringと全く同じ動作を行う。 このメソッドは、ArrayやNumber、Date型のオブジェクトがtoLocaleStringを持っているのに対し、他のオブジェクトはこれを持っていないため、他の型でtoLocaleStringが呼び出される場合でもエラー出してプログラムの実行が止まらないための下敷きとして用意されている。 他のデータ型でtoLocaleStringを使うべき問題にあたった場合にそれぞれのデータ型でメソッドを定義してやればよい。
[編集] hasOwnProperty(V)
オブジェクトが引数で渡したプロパティを持っているかをチェックする。
for~in文は通常、オブジェクトにプロパティやメソッドを追加したときにその違いが出る。 例えば次の様なオブジェクトを作成したとする。
Object.prototype.getBMI = function(){ return this["体重"] / Math.pow(this["身長"],2); }
var girl ={
"身長":158,
"体重":49
};
for( var i in girl )
document.write( i, ' : ', girl[i], '<br />' );
この様にすると結果として、「身長」、「体重」の他に「getBMI」のメソッドの中身も表示されてしまう。 それを禁止するために、親オブジェクトから取得したデータを無視するため次の様に記述する。
for( var i in girl )
if( girl.hasOwnProperty(i) )
document.write( i, ' : ', girl[i], '<br />' );
ちなみに、親オブジェクトも含めてそのプロパティを持っているかどうかを調べるにはtry~catch文で囲って実行してみる事で分かる。
try{ girl[i]; } catch(e){ /* エラーが起きた場合の初期化処理 */ }
[編集] valueOf()
データの値をそのまま返す。 このメソッドは他のオブジェクトでそれぞれオーバーライドされるのを期待されて存在している。 そのため、単体としてそれほどの意味は無い。
[編集] isPrototypeOf(V)
引数で与えたオブジェクトが、自分の子孫ノードであるかどうかをチェックする。
function Foo(){}
function Bar(){}
function Baz(){}
Bar.prototype = new Foo();
Baz.prototype = new Bar();
document.write( Foo.prototype.isPrototypeOf(new Bar()) ); // true
document.write( Foo.prototype.isPrototypeOf(new Baz()) ); // true
[編集] propertyIsEnumerable(V)
引数で指定したプロパティがfor~in文で列挙可能なものであるのかをチェックする。 列挙可能ならtrueを、不可能ならfalseを返す。