JavaScript 基本包装类型

摘要:在本教程中,您将学习关于基本包装类型,包括 Boolean、String 和 Number。

基本包装类型的介绍

JavaScript 提供三种基本包装类型:BooleanNumberString 类型。

基本包装类型使使用基本值(包括布尔值、数字和字符串)变得更容易。

查看以下示例

let language = 'JavaScript';
let s = language.substring(4);
console.log(s);  // Script
Code language: JavaScript (javascript)

在此示例中,变量 language 持有一个基本字符串值。它没有像 substring() 这样的方法。但是,上面的代码完美运行。

当您在持有数字、字符串或布尔值的变量上调用方法时,JavaScript 在幕后执行以下步骤

  • 创建一个对应类型的对象。
  • 在实例上调用特定方法。
  • 立即删除实例。

因此,以下代码

let language = 'JavaScript';
let str = language.substring(4);Code language: JavaScript (javascript)

在技术上等效于以下代码

let language = 'JavaScript';
// behind the scenes of the language.substring(4);
let tmp = new String(language);
str = temp.substring(4);
temp = null;Code language: JavaScript (javascript)

基本包装类型与引用类型

当您使用 new 运算符创建引用类型的对象时,该对象将保留在内存中,直到它超出范围。

以下变量 s 将保留在堆中,直到它超出范围

let s = new String('JavaScript');
console.log(s);Code language: JavaScript (javascript)

但是,自动创建的基本包装对象仅存在于一行代码中。查看以下示例

let s = 'JavaScript';
s.language = 'ECMAScript';
console.log(s.language); // undefined
Code language: JavaScript (javascript)

在此示例中,我们尝试访问 s 变量的 language 属性,但收到了 undefined 的值,而不是 'ECMAScript'

console.log(s.language); // undefinedCode language: JavaScript (javascript)

原因是以下代码创建了一个 String 对象并为 language 属性分配一个值。

s.language = 'ECMAScript';Code language: JavaScript (javascript)

但是,具有 language 属性的 String 对象仅在执行此代码行时存在。

不建议显式创建基本包装对象,如以下所示

let n = new Number(10);
let s = new String('JS');
let b = new Boolean(false);
Code language: JavaScript (javascript)

但是,您应该知道哪些方法可用于基本值,以便更有效地操作它。

在本教程中,您已经了解了 JavaScript 基本包装类型(用于布尔值、数字和字符串)。

本教程是否有帮助?