在 JavaScript 中,包装类型(Wrapper Objects)是对原始类型(Primitive Types)值的一个包装对象。JavaScript 中的原始类型包括:string、number、boolean、null、undefined 和 symbol。其中,null 和 undefined 是没有对应包装对象的,而其他原始类型都有对应的包装对象类型。
String(字符串):
stringStringNumber(数字):
numberNumberBoolean(布尔):
booleanBoolean包装类型的主要作用是提供了一些方法和属性,以便更好地操作和处理原始类型的值。例如:
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() 创建的对象也有类似的行为。
包装类型提供了对原始类型值的对象化操作能力,使得开发者可以使用对象方法来操作原始类型的值。这种机制在幕后进行,开发者通常不需要显式地创建包装对象。