• 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() 方法。

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

  • 相关阅读:
    The user specified as a definer (‘platformadmin‘@‘%‘) does not exist.
    JS基础知识
    springboot
    【LeetCode: 1222. 可以攻击国王的皇后:dfs | bfs】
    大数据面试题:Spark和Flink的区别
    Java高级学习篇之网络编程
    讲解 CSS 过渡和动画 — transition/animation (很全面)
    MySQL安装
    解决uncompyle6反编译报错KeyError
    【傅里叶梅林图像配准】用于图像配准的傅里叶梅林相位相关性的实现(Matlab代码实现)
  • 原文地址:https://blog.csdn.net/ICanWin_lll/article/details/133671799