给你一个值,如何判断其是对象还是数组???
我们先给出数据
var lists = [1,2,3,4,5]
var objs = {
length:5
}
我们分别尝试如下方法
function prototypeJudge(objs) {
return Object.prototype.toString.call(objs).slice(1,-1).split(' ')[1]
}
console.log('(✘)使用length',lists.length,objs.length);
console.log('(✔)使用isArray',Array.isArray(lists),Array.isArray(objs));
console.log('(✔)使用constuctor',lists.constructor === Array,objs.constructor === Array);
console.log('(✔)使用instanceof',lists instanceof Array,objs instanceof Array);
console.log('(✔)使用Object的原型函数',prototypeJudge(lists) === 'Array',prototypeJudge(objs) === 'Array');
输出结果如下
所以有三种常见方法判断: constructor属性,Array.isArray方法,instanceof关键字,Object.prototype.toString.call()方法
这里面推荐使用:Object.prototype.toString.call()方法和Array.isArray方法