var arr = [];
var obj = {};
var str = '123';
// 1.验证原型对象
console.log(
Array.prototype.isPrototypeOf(arr), //true
Array.prototype.isPrototypeOf(obj) //false
)
console.log(
Object.getPrototypeOf(arr) == Array.prototype, //true
Object.getPrototypeOf(obj) === Array.prototype //false
)
//2.验证构造函数
console.log(
arr.constructor == Array, //true
obj.constructor == Array //false
)
console.log(
arr instanceof Array, // true
obj instanceof Array // false
)
//这种方法不严格
var arr1 = [],
obj2 = {};
obj2.__proto__ = arr1;
console.log(obj2 instanceof Array) //true 当改变对象的__proto__属性,此种方法不能正确检测
// 3.检查内部属性 class
console.log(
Object.prototype.toString.call(obj) == '[object Array]', //false
Object.prototype.toString.call(arr) == '[object Array]', //true
Object.prototype.toString.call(obj2) == '[object Array]' //false
)
//4.最简单的方式isArray
console.log(
Array.isArray(arr), //true
Array.isArray(obj2), //false
Array.isArray(obj) //false
)
console.log(Object.prototype.toString.call(undefined))//[object Undefined]
检测数组和类数组,如何进一步检测数据类型
最新推荐文章于 2022-02-25 14:41:56 发布