怎样判断数组类型
整理了四种判断数组类型方法:
方法一: instance of方法
//声明变量 var arr = new Array(); var newArr = []; var str = ""; var nul = null; var und = undefined; var obj = new Object(); var newObj = {}; //声明函数 function isArray(obj){ return obj instanceof Array ? true : false; } //调用函数,并获取结果 var result = isArray(arr); //打印结果 console.log("result:",result); //true
方法二:构造函数(constructor)方法
//声明函数 function isArray(obj) { var result = obj.constructor == Array ? true : false; return result; } //测试结果 console.log(isArray([])); console.log(isArray({})); console.log(isArray(new Array())); console.log(isArray(new Object())); console.log(isArray("string")); console.log(isArray(123)); console.log(isArray(true));
方法三:call方法
解释:
call():函数实例的call方法,可以指定函数内部this的指向(即函数执行时所在的作用域),然后在所指定的作用域中,调用该函数。
function isArray(obj) { return Object.prototype.toString.call(obj); } var arr=[2,5,6,8]; var obj={name:'zhangsan',age:25}; var fn = function () {} console.log(isArray(arr)); //[object Array] console.log(isArray(obj)); //[object Object] console.log(isArray(fn)); //[object function]
方法四:isArray方法
// ES5定义了Array.isArray: var arr = isArray([]); //true // var arr = isArray({}); //false console.log("arr:", arr); function isArray(obj) { var result = Array.isArray(obj) ? true : false; return result; }