データ型

データ型には大別すると「基本データ型」と「複合データ型」があり、データ処理の対象としてはそれぞれ「基本型」と「参照型」になります。

配列と関数はオブジェクトの特殊な形であり、データ型としては同一です。

型の判定

  • typeof演算子 … 値のデータ型を表す文字列を返す。
  • instanceof演算子 … 左側のオブジェクトが、右側のクラスのインスタンスであればtrueを返す。
  • Object.prototype.toString.call( Obj ) … オブジェクトのtoString()メソッドの文字列を返す。
コード 評価結果
typeof new Date()
"object"
new Date() instanceof Date
true
Object.prototype.toString.call( new Date() )
"[object Date]"
Firefox6 + Firebug1.8による結果

typeof演算子が返す値

返値
数値 number
文字列 string
論理値 boolean
オブジェクト object
配列
null
関数 function
未定義値 undefined
コアJavaScriptに
含まれないオブジェクト
実装依存
※ Number、String、BooleanオブジェクトおよびRegExpオブジェクト (正規表現リテラル) は、「object」となります。

instanceof演算子のクラス名の指定方法

instanceof演算子の右オペランドに指定するのは、クラス名でなければなりません。JavaScriptのクラスは、オブジェクトを初期化するコンストラクタで表されます。よって右オペランドには、クラスのコンストラクタ関数の名前を指定します。

'a' instanceof Stringは、trueとならない

文字列リテラルはStringオブジェクトではないため、'a' instanceof Stringはtrueとはなりません。 文字列リテラルは String オブジェクトとは別物 - String Object - MDN Docs

  コード 評価結果
instanceof
'a' instanceof String
false
new String( 'a' ) instanceof String
true
typeof
typeof 'a'
"string"
typeof new String( 'a' )
"object"
Firefox6 + Firebug1.8による結果