在 JavaScript 中,包装类型(Wrapper Objects)是对原始类型(Primitive Types)值的一个包装对象。JavaScript 中的原始类型包括:string
、number
、boolean
、null
、undefined
和 symbol
。其中,null
和 undefined
是没有对应包装对象的,而其他原始类型都有对应的包装对象类型。
String(字符串):
string
String
Number(数字):
number
Number
Boolean(布尔):
boolean
Boolean
包装类型的主要作用是提供了一些方法和属性,以便更好地操作和处理原始类型的值。例如:
String
对象的方法,如 toUpperCase()
、toLowerCase()
、substring()
等。Number
对象的方法,如 toFixed()
、toExponential()
等。Boolean
对象的方法(虽然不常用)。JavaScript 在处理原始类型时,会自动地将它们“装箱”成包装类型对象,以便调用对象的方法。这种过程称为自动装箱。例如:
let str = "hello";
console.log(str.toUpperCase()); // 输出 "HELLO"
在上面的代码中,str
是一个原始类型的字符串,但是当调用 toUpperCase()
方法时,JavaScript 自动将 str
转换为 String
对象,然后调用该对象的方法。
虽然可以手动创建包装对象,但在实际编程中不推荐这样做,因为它可能导致混淆和不必要的性能开销。例如:
let str = new String("hello");
console.log(typeof str); // 输出 "object"
在这个例子中,str
是一个 String
对象,而不是一个原始类型的字符串,这会导致 typeof
操作符返回 object
而不是 string
。同样地,使用 new Number()
和 new Boolean()
创建的对象也有类似的行为。
包装类型提供了对原始类型值的对象化操作能力,使得开发者可以使用对象方法来操作原始类型的值。这种机制在幕后进行,开发者通常不需要显式地创建包装对象。