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

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

发布于 2018-04-12 阅读 339 次 Javascript

参考:https://www.cnblogs.com/Walker-lyl/p/5597547.html
因为无论是数组还是对象,对于typeof的操作返回值都为object,所以就有了区分数组类型和对象类型的需要:

方法一:通过length属性

一般情况下对象没有length属性值,其值为undefiend,而数组的length值为number类型
缺点:非常不实用,当对象的属性存在length,且其值为number(比如类数组),则该方法失效,不建议使用,看看即可。

方法二:通过instanceof来判断区分

instanceof 判断是否继承自某个对象

var a = {
    name:'xiaoyaoji'
};
var b = ['xiaoyaoji'];

a instanceof Array // false
b instanceof Array // true

方法三:通过constructor

constructor返回一个对象的构造器

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()方法不同

var a = {
    name:'xiaoyaoji'
};
var b = ['xiaoyaoji'];
console.log(a); // [object Object]
console.log(b); // [object Array]

方法五:通过Array独有方法判断

var a = {
    name:'xiaoyaoji'
};
var b = ['xiaoyaoji'];

console.log(a.sort === Array.prototype.sort); // false
console.log(b.sort === Array.prototype.sort); // true