JavaScriptにおけるtypeofオペレータの使用例

1622 ワード

一つの値にtypeofオペレータを使うと、次の文字列に戻ります。「undefined」――この値が「bollan」と定義されていないなら――この値がブール値「string」であれば――この値が文字列「number」であれば、値が「object」であれば――これが対象またはnull「function」であれば――この値が関数です。
一般的なtypeofオペレータの戻り値はnumber、string、bolean、undefined、object、およびfunctionを含む。

var n;
console.log(typeof n); // "undefined"

n = 1;
console.log(typeof n); // "number"

n = "1";
console.log(typeof n); // "string"

n = false;
console.log(typeof n); // "boolean"

n = { name: "obj" };
console.log(typeof n); // "object"

n = new Number(5);
console.log(typeof n); // "object"

n = function() { return; };
console.log(typeof n); // "function"
これらの例では、typeofオペレータの操作数は変数であっても良いし、数値字面量であっても良いと説明しています。なお、typeofは関数ではなくオペレータですので、例の括弧は必須ではありません。
上記の例から、Number()で作成した数字も、typeofで対象と判定されて値「object」を返すことが分かりました。これは、コンストラクタが対象となるため、数字オブジェクト(Number)、文字列オブジェクト(String)、配列オブジェクト(Aray)、Functionオブジェクト、日スタートオブジェクト(Date)、ブールオブジェクト(Boolean)やエラーオブジェクト(Error)などJavaScriptにオブジェクトを内蔵する場合、どうすればいいですか?ここでは、

var n, res;

n = new Number(66);
res = Object.prototype.toString.call(n);
console.log(res); // "[object Number]"

n = new String("string");
res = Object.prototype.toString.call(n);
console.log(res); // "[object String]"

n = [];
res = Object.prototype.toString.call(n);
console.log(res); // "[object Array]"

// ...
などのオブジェクトのtoString方法を呼び出すことができる。