[javascript] Q.ECMAScript5 isArray()

A. JavaScriptの配列は typeof では object が返ってくるので
Arrayか判断するのはちょいと面倒だったのですが
ECMAScript5では Array.isArray() というクラスメソッドが追加されました。

var a = [1, 2, 3];
var b = {x:1, y:2, z:3};

// typeof は object になる
console.log( typeof a );
console.log( typeof b );

// ECMAScript5では isArray が使える
console.log( Array.isArray(a) );
console.log( Array.isArray(b) );

// コンストラクタをみてみる
console.log( a.constructor );
console.log( b.constructor );
console.log( a.constructor === Array);
console.log( b.constructor === Array);

// ObjectのtoStringを呼び出して判断
console.log( Object.prototype.toString.call(a) );
console.log( Object.prototype.toString.call(b) );
console.log( Object.prototype.toString.call(a) === "[object Array]");
console.log( Object.prototype.toString.call(b) === "[object Array]");


js_isArray.png

参考サイト:
Chapter 3. Literals and Constructors