【转载】js中区分object和array方法
前言--我们可能会经常用到typeof去判断某一个变量的类型。
typeof一般测试基本类型(Undefined、Null、Boolean、Number、String),对引用类型(数组,对象,函数),数组和对象返回object,函数引用类型返回Function。
typeof对于区分数组和对象是没有用的。
方法一:通过ES6中的Array.isArray来识别
Array.isArray([]) //true
Array.isArray({}) //false
方法二:通过instanceof来识别
[] instanceof Array //true
{} instanceof Array //false
方法三:通过调用constructor来识别
{}.constructor //返回object
[].constructor //返回Array
**方法四:通过Object.prototype.toString.call方法来识别 **
Object.prototype.toString.call([]) //["object Array"]
Object.prototype.toString.call({}) //["object Object"]
1.创建方法不同:
2.对象没有长度,(对象没有for循环):
3.调用方法不同
4.对象键值唯一,数组可以重复
5.都可以用for in循环