1、instanceof方法 (判断数组的prototype是否在该对象的原型链中)
console.log([] instanceof Array); //true
2、constructor方法 (判断该对象的构造函数是否是Array)
console.log([].constructor === Array); // true
3、Array.isArray() (数组自带的判断方法)
console.log(Array.isArray([])); // true
1.Object.prototype.toString (推荐!!!)
Object.prototype.toString的行为:首先,取得对象的一个内部属性,然后依据这个属性,返回一个类似于"[object Array]"的字符串作为结果. 利用这 个方法,再配合call,我们可以取得任何对象的内部属性,然后把类型检测转化为字符串比较,以达到我们的目的。
const types = {
get:(type)=>Object.prototype.toString.call(type),
string:'[object String]',
number:'[object Number]',
boolean:'[object Boolean]',
function:'[object Function]',
array:'[object Array]',
object:'[object Object]',
null:'[object Null]',
undefined:'[object Undefined]',
}
var arr = [1,2,3,1];
console.log( typs.get(arr) === types.array ); //true
var obj = {};
console.log( typs.get(obj) === types.object ); //true
2. instanceof操作符 (可用于检测是否是数组)
instanceof运算符用于检测构造函数的prototype属性是否出现在对象的原型链中的任何位置
console.log([] instanceof Array); //true
console.log({} instanceof Array); //false
console.log({} instanceof Object); //true
console.log([] instanceof Object); //true
3.对象的constructor属性 (可用于检测是否是[ ]和{ })
所有对象都会从它的原型上继承一个 constructor 属性:
console.log({}.constructor === Object); // true
console.log({}.constructor === Array); //false
console.log([].constructor === Array); // true
console.log([].constructor === Object); //false
4. typeof操作符 (判断Function、String、Number、Undefined,Boolean)
利用typeof判断类型, 可以判断Function、String、Number、Undefined,Boolean;
利用typeof判断为object,不一定就是 {},也有可能是 [ ], null;
console.log(typeof 'abc'); //string
console.log(typeof 98); //number
console.log(typeof age); //undefined
console.log(typeof true); //bol
console.log(typeof function(){}); //function
console.log(typeof null); //object
console.log(typeof {}); //object
console.log(typeof []); //object
5.Array.isArray() (推荐)
检测一个值是否为数组。IE9+、 Firefox 4+、Safari 5+、Opera 10.5+和Chrome都实现了这个方法。但是在IE8之前的版本是不支持的
console.log(Array.isArray([])); //true
兼容浏览器写法
var arr = [1,2,3,1];
var arr2 = [{ abac : 1, abc : 2 }];
function isArrayFn(value){
if (typeof Array.isArray === "function") {
return Array.isArray(value);
}else{
return Object.prototype.toString.call(value) === "[object Array]";
}
}
alert(isArrayFn(arr));// true
alert(isArrayFn(arr2));// true
参考链接 https://www.cnblogs.com/heshan1992/p/6927690.html