判断对象是否为数组(终结版)

时间:2020-8-2 作者:admin


判断对象是否是数组(终结版)

  • 大家都知道window.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>
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。