判断对象是否是数组(终结版)
- 大家都知道typeof() 只能判断原始5大类型 所以需要判断数组只能另求方案了
- 废话不多说直接上代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
let obj1 = [1,2,3];
let obj2 = new Date();
let obj3 = new Object();
// 判断是否是数组
//1. 判断对象的父亲(3)
console.log(
Array.prototype == obj1.__proto__,
Array.prototype == obj2.__proto__,
Array.prototype == obj3.__proto__
)
console.log(
Object.getPrototypeOf(obj1) == Array.prototype,
Object.getPrototypeOf(obj2) == Array.prototype,
Object.getPrototypeOf(obj3) == Array.prototype,
)
console.log(
Array.prototype.isPrototypeOf(obj1),
Array.prototype.isPrototypeOf(obj2),
Array.prototype.isPrototypeOf(obj3),
)
//2. 判断对象的妈妈(2)
console.log(
obj1.constructor == Array,
obj2.constructor == Array,
obj3.constructor == Array,
)
console.log(
obj1 instanceof Array,
obj2 instanceof Array,
obj3 instanceof Array
)
//3. 判断对象的DNA class
console.log(
Object.prototype.toString.call(obj1) == "[object Array]",
Object.prototype.toString.call(obj2) == "[object Array]",
Object.prototype.toString.call(obj3) == "[object Array]"
)
//3. ES5 封装直接判断
console.log(
Array.isArray(obj1),
Array.isArray(obj2),
Array.isArray(obj3)
)
</script>
</body>
</html>