javascript区别对象和数组

Javascript 语言精粹

看《Javascript语言精粹》上看到的,挺有意思的,权当记录。

首先知道,我们的JavaScript中的数据很简洁的。只有 undefined, null, boolean, number,string,object。

Javascript中认为数组是一个对象,所以直接通过typeof是无法检测出是否是Array还是Object的,所以判断两者可以这样做:


var isArray = function(value){
return value && typeof value === ‘object’ && value.constuctor = Array;
}

但是在检测从不同的敞口(window)或 (frame)里构造的数组会有问题,douglas crockford给出了如下的解决方案:


var isArray = function(value){
return value && typeof value === ‘object’ && typeof value.length === ‘number’ && typeof value === ‘function’ && !(value.propertyIsEnumerable(‘length’));
}

所有的建议是如果你想要深入学习一门语言的时候,一定要看权威的著作!