Number、Boolean 和 String 既是基础类型的包装函数,也是构造函数,以下为你详细介绍:
作为基础类型的包装函数
在 JavaScript 中,Number、Boolean 和 String 可以作为函数来使用,用于进行类型转换,将其他类型的值转换为对应的基础数据类型。
示例代码
// 使用 Number 进行类型转换
let numStr = "123";
let num = Number(numStr);
console.log(typeof num); // 输出: "number"
// 使用 Boolean 进行类型转换
let boolValue = Boolean(0);
console.log(typeof boolValue); // 输出: "boolean"
// 使用 String 进行类型转换
let numToStr = String(456);
console.log(typeof numToStr); // 输出: "string"
在上述代码中,Number、Boolean 和 String 以函数的形式调用,将不同类型的值转换为对应的基础数据类型,返回的结果是基础类型的值。
作为构造函数
Number、Boolean 和 String 也可以使用 new 关键字作为构造函数来创建对象,这些对象是对应基础类型的包装对象。
示例代码
// 使用 Number 构造函数创建对象
let numObj = new Number(123);
console.log(typeof numObj); // 输出: "object"
// 使用 Boolean 构造函数创建对象
let boolObj = new Boolean(true);
console.log(typeof boolObj); // 输出: "object"
// 使用 String 构造函数创建对象
let strObj = new String("hello");
console.log(typeof strObj); // 输出: "object"
这里通过 new 关键字调用 Number、Boolean 和 String,创建出来的 numObj、boolObj 和 strObj 是对象类型,它们是对应基础类型的包装对象,拥有一些额外的属性和方法。
基础类型和包装对象的区别
基础类型的值是简单的数据,而包装对象是对象类型,具有自己的属性和方法。当访问基础类型值的属性或方法时,JavaScript 会临时创建一个包装对象,操作完成后立即销毁该包装对象。
示例代码
let basicStr = "hello";
// 访问基础类型字符串的方法,JavaScript 会临时创建包装对象
console.log(basicStr.toUpperCase()); // 输出: "HELLO"
let strObj = new String("world");
console.log(strObj.toUpperCase()); // 输出: "WORLD"
综上所述,Number、Boolean 和 String 具有双重身份,既可以作为包装函数进行类型转换,也可以作为构造函数创建包装对象。