• js判断一个对象是不是一个数组!


    1.  let n = 10,
    2.  str = "hello",
    3.  b = true,
    4.  nu = null,
    5.  un;
    6. let arr = [1,2,3,4];
    7. let obj = {};
    8.  typeof(n) // number
    9.  typeof(str) // string
    10.  typeof(b) // blooean
    11.  typeof(nu) // object
    12.  typeof(un) // undefined
    13.  typeof(arr) // object
    14.  typeof(obj) // object
    15.  
    • typeof 只能判断原始类型!
    • typeof 不能判断引用类型的详细。
    • null 是一个对象 : null适用于一个释放一个对象的引用,null经常用来打断对象的引用,代替对象中变量地址,让变量不在引用。
    • 所以null也是一个特殊的空地址。null是一个没有意义的空对象。.

    判断方法

    1. 判断对象的prototype
    1. //判断是不是一个数组
    2. let arr = [1,2,3,4];
    3. obj.__proto__ == Array.prototype//true
    1. 因为__proto__可能被浏览器禁用,所以有等效函数来完成__proto的任务;Object.getPrototypeOf(child)
    Object.getPrototypeOf(arr) === Array.prototype;
    
    1. 还有一个更直接的函数isPrototype(child)
        Array.prototype.isPrototype(arr);
    
    1. 用父级原型对象中的constructor属性
        arr.constructor == Array//true
    
    1. 用instanceof
        arr instanceof Array;  //true
    

    以上五种有一个缺陷就是将对象的原型对象改成数组的原型对象,以上五种都失效,

    1.     let obj = {};
    2.     obj.__proto__ = Array.prototype;
    3.     obj instanceof Array// true.
    4.     obj.constructor == Array//true
    1. 输出对象的隐藏class,利用.call()调用顶级的父元素的toString,.call()可以让一个对象调到原本不属于他自己的函数。。
    1. //对象
    2.     let obj = { };
    3.     obj.__proto__ = Array.prototype;
    4.     obj.toString = [object,Object];
    5. //数组的原型对象是重写了toString 方法默认会取出数组里面的内容转成字符串并用逗号间隔!!
    6.     
    7.     let arr = [1,2,3,4];
    8.     arr.toString();
    9. //输出结果是: 1,2,3,4;
    10. //所以要用.call()方法,调用顶端的原型对象。
    11. Object.prototype.toString.call(arr);
    12. //输出 [object Array]
    13. //判断方法  
    14. Object.prototype.toString.call(arr)=[object Array]
    1. ES5中新增了一个用来判断一个对象是不是数组的函数:
    1.     let arr = [1,2,3,4];
    2.     Array.isArray(arr)
  • 相关阅读:
    numpy中的seed
    无涯教程-JavaScript - OCT2HEX函数
    基于SpringBoot+Vue的宿舍管理系统
    接口测试经验分享
    安装njnx --chatGPT
    【Overload游戏引擎细节分析】standard材质Shader
    grafana Not saving new dashboard due to restricted database access
    SpringBoot定时任务 - 开箱即用分布式任务框架xxl-job
    Istio中流量劫持机制
    Mysql入门
  • 原文地址:https://blog.csdn.net/qq_43198727/article/details/125894088