• JavaScript中的包装类型详解


    什么是包装类型?

    在JavaScript中,基本数据类型(如数字、字符串、布尔值等)没有自己的属性和方法,它们是不可变的。为了在基本数据类型上执行操作,JavaScript提供了相应的包装类型。这些包装类型是NumberStringBoolean

    怎么将基本数据类型转换成包装类型?

    • 对于数字,可以使用Number构造函数:
    1. var num = 10; // 基本数据类型
    2. var numObj = new Number(num); // 转换为Number对象
    3. console.log(typeof numObj) // object
    4. console.log(numObj instanceof Number) // true
    5. console.log(numObj instanceof Object) // true
    6. console.log(numObj.constructor === Number) // true
    7. console.log(Object.prototype.toString.call(numObj)) // [object Number]
    • 对于字符串,可以使用String构造函数:
    1. var str = "Hello"; // 基本数据类型
    2. var strObj = new String(str); // 转换为String对象
    3. console.log(typeof strObj) // object
    4. console.log(strObj instanceof String) // true
    5. console.log(strObj instanceof Object) // true
    6. console.log(strObj.constructor === String) // true
    7. console.log(Object.prototype.toString.call(strObj)) // [object String]
    • 对于布尔值,可以使用Boolean构造函数:
    1. var bool = true; // 基本数据类型
    2. var boolObj = new Boolean(bool); // 转换为Boolean对象
    3. console.log(typeof boolObj ) // object
    4. console.log(boolObj instanceof Boolean) // true
    5. console.log(boolObj instanceof Object) // true
    6. console.log(boolObj .constructor === Boolean) // true
    7. console.log(Object.prototype.toString.call(boolObj ))// [object Boolean]

    什么场景下会对基本数量进行自动转换?

    在读取基本数据类型的属性和方法的时候,JavaScript会自动将基本数据类型转换为包装类型,以便在需要时调用相应的方法。这种自动转换称为“装箱”(boxing)。例如:

    1. let str = "Hello"; // 基本数据类型
    2. let strObj = str.toUpperCase(); // 自动装箱并调用String对象的toUpperCase方法
    3. str.constructor 自动装箱读取String对象的constructor属性

    在这个示例中,str 是一个基本数据类型的字符串,但在调用 toUpperCase() 方法时,JavaScript会自动将其装箱为 String 对象,并调用 toUpperCase() 方法。

    包装类型是临时创建的对象,它们具有与基本数据类型相同的值,但是它们是对象,而不是原始值。在方法或者属性调用结束后,临时创建的对象就会销毁。

  • 相关阅读:
    ContOS 7 修改IP地址
    【蓝桥每日一题]-贪心(保姆级教程 篇1)#拼数 #合并果子 #凌乱yyy
    Vue2(完结):replace属性、编程式路由导航、缓存路由组件、两个新钩子、路由守卫、history与hash
    双飞翼布局
    【BI工具】-- Superset 、Metabase 和 Redash 对比
    SQL注入的一些注入
    基于大规模分布式系统的云原生运维实践
    Springboot整合Flowable6.x导出bpmn20
    Java本地高性能缓存的几种实现方式
    小白备战大厂算法笔试(五)——树
  • 原文地址:https://blog.csdn.net/ICanWin_lll/article/details/133671799