JavaScript中的包装类型详解

什么是包装类型?

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

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

  • 对于数字,可以使用Number构造函数:
var num = 10; // 基本数据类型
var numObj = new Number(num); // 转换为Number对象

console.log(typeof numObj) // object

console.log(numObj instanceof Number) // true
console.log(numObj instanceof Object) // true

console.log(numObj.constructor === Number) // true

console.log(Object.prototype.toString.call(numObj)) // [object Number]
  • 对于字符串,可以使用String构造函数:
var str = "Hello"; // 基本数据类型
var strObj = new String(str); // 转换为String对象

console.log(typeof strObj) // object

console.log(strObj instanceof String) // true
console.log(strObj instanceof Object) // true

console.log(strObj.constructor === String) // true

console.log(Object.prototype.toString.call(strObj)) // [object String]
  • 对于布尔值,可以使用Boolean构造函数:
var bool = true; // 基本数据类型
var boolObj = new Boolean(bool); // 转换为Boolean对象

console.log(typeof boolObj ) // object

console.log(boolObj instanceof Boolean) // true
console.log(boolObj instanceof Object) // true

console.log(boolObj .constructor === Boolean) // true

console.log(Object.prototype.toString.call(boolObj ))// [object Boolean]

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值