js中没有一个好的机制来区分数组和对象。typeof运算符报告数组的类型是‘object’,要确定一个对象是否是数组我们可以通过自己定义的isArray方法来判断。
先小结以下typeof运算符:
字符串、数字、布尔类型typeof运算符分别返回string, number, boolean。
typeof(null)返回object
自定义方法区分数组和对象:
function isArray(obj) {
return obj && typeof(obj) === 'object' && obj.constructor === Array
}
该方法在识别从不同的窗口或帧(frame)里的构造函数时会失败。有一个更好的方法判断一个对象是否时数组:
function isArray(obj) {
return Object.prototype.toString.apply(obj) === '[object Array]';
}
参考:《JavaScript语言精粹》