如何区分数组对象函数
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');