当前位置:首页 > js判断一个变量是数组还是对象

js判断一个变量是数组还是对象

发布于 2018-04-12 阅读 669 次 Javascript
参考:https://www.cnblogs.com/Walker-lyl/p/5597547.html 因为无论是数组还是对象,对于typeof的操作返回值都为object,所以就有了区分数组类型和对象类型的需要: ###方法一:通过length属性 一般情况下对象没有length属性值,其值为undefiend,而数组的length值为number类型 `缺点:`非常不实用,当对象的属性存在length,且其值为number(比如类数组),则该方法失效,不建议使用,看看即可。 ###方法二:通过instanceof来判断区分 instanceof 判断是否继承自某个对象 ```javascript var a = { name:'xiaoyaoji' }; var b = ['xiaoyaoji']; a instanceof Array // false b instanceof Array // true ``` ###方法三:通过constructor constructor返回一个对象的构造器 ```javascript var arr = [1, 2, 3]; var obj = { name: 'lyl', age: 18, 1: 'name' } console.log(arr.constructor === Array); // true console.log(obj.constructor === Array); // false ``` ###方法四:通过toString()方法 数组原型和对象原型定义的toString()方法不同 ```javascript var a = { name:'xiaoyaoji' }; var b = ['xiaoyaoji']; console.log(a); // [object Object] console.log(b); // [object Array] ``` ###方法五:通过Array独有方法判断 ```javascript var a = { name:'xiaoyaoji' }; var b = ['xiaoyaoji']; console.log(a.sort === Array.prototype.sort); // false console.log(b.sort === Array.prototype.sort); // true ```