跳到主要内容

如何区分数组对象函数

var arr = [1, 2];
var obj = { name: 'houfei' };
var fun = function () {
console.log('fun');
};

通过 instanceof 判断

console.log(arr instanceof Array);
console.log(obj instanceof Object);
console.log(fun instanceof Function);

通过 typeof 和 isNaN 判断数组对象

console.log(typeof arr && !isNaN(arr.length), typeof obj && !isNaN(obj.length));

通过原型上的 toString 方法判断

// 方法3:通过原型上的toString方法判断
console.log(Object.prototype.toString.call(arr) === '[object Array]');
console.log(Object.prototype.toString.call(obj) === '[object Object]');
console.log(Object.prototype.toString.call(fun) === '[object Function]');

通过 ES6 的 isArray()判断数组\对象

console.log(Array.isArray(arr), Array.isArray(obj));

通过构造函数名判断

console.log(arr.constructor.name === 'Array');
console.log(obj.constructor.name === 'Object');
console.log(fun.constructor.name === 'Function');