• Object.prototype.toString.call() 和 instanceOf 和 Array.isArray() 详解


    解析:

    理解 Object.prototype.toString.call(), instanceof, 和 Array.isArray() 是 JavaScript 中重要的类型检查工具。以下是一个较为详细的解释和示例代码,帮助你理解它们的工作原理和使用场景

    Object.prototype.toString.call():

    Object.prototype.toString.call() 是一种通用的方法,它用于获取值的内部 [[Class]] 属性,然后返回一个字符串,表示值的类型。这个方法可以用于各种 JavaScript 值,包括原始值和对象。以下是详细解释和示例:

    // 示例1: 使用Object.prototype.toString.call()检查值的类型
    
    const arr = [];
    const obj = {};
    const num = 42;
    const str = "Hello";
    
    const typeOfArr = Object.prototype.toString.call(arr);
    const typeOfObj = Object.prototype.toString.call(obj);
    const typeOfNum = Object.prototype.toString.call(num);
    const typeOfStr = Object.prototype.toString.call(str);
    
    console.log(typeOfArr); // "[object Array]"
    console.log(typeOfObj); // "[object Object]"
    console.log(typeOfNum); // "[object Number]"
    console.log(typeOfStr); // "[object String]"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    这个方法的好处是它可以在任何情况下都返回一个一致的字符串,用来描述值的类型。这使得它非常适合用于类型检查和泛型编程。

    instanceof:

    instanceof 是一种用于检查对象是否是特定构造函数或类的实例的方法。它通常用于检查对象的继承关系。以下是详细解释和示例:

    // 示例2: 使用instanceof检查对象的构造函数
    
    class MyArray extends Array {}
    const arr = new MyArray();
    
    console.log(arr instanceof MyArray); // true
    console.log(arr instanceof Array); // true
    console.log(arr instanceof Object); // true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    instanceof 的优点是它可以用来检查对象是否是特定构造函数或类的实例,但它不适用于原始值(如数字、字符串等)。

    Array.isArray():

    Array.isArray() 是专门用于检查一个值是否是数组的方法。它返回一个布尔值,指示被检查的值是否是数组。以下是详细解释和示例:

    // 示例3: 使用Array.isArray()检查值是否是数组
    
    const arr = [];
    const obj = {};
    const num = 42;
    
    console.log(Array.isArray(arr)); // true
    console.log(Array.isArray(obj)); // false
    console.log(Array.isArray(num)); // false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    这个方法特别适合用于确定一个值是否是数组。

    总结:

    Object.prototype.toString.call() 是通用的,用于确定值的类型。
    instanceof 用于检查对象是否是特定构造函数或类的实例。
    Array.isArray() 用于检查一个值是否是数组。
    根据你的具体需求,选择适当的方法来执行类型检查。这三种方法一起构成了 JavaScript 中强大的类型检查工具。

  • 相关阅读:
    工作记录---为什么双11当天不能申请退款?(有趣~)
    做一个校园跑腿小程序需要多少成本?
    基于图像识别的跌倒检测
    你好GPT-4o——对GPT-4o发布的思考与看法
    多平台的免费chatGPT应用软件平台推荐:Chatbox
    大学生游戏静态HTML网页设计 (HTML+CSS+JS仿英雄联盟网站15页)
    基于VC++的包过滤防火墙系统设计与实现
    【深度优先搜索】leetcode 1020. 飞地的数量
    Python经典习题(二)
    django migrate后数据库无表格
  • 原文地址:https://blog.csdn.net/wangxuanyang_zer/article/details/134023164