JavaScript 中的包装类型

86 阅读2分钟

1.包装类型简介

​ 在JavaScript中,包装类型是指基本数据类型(如字符串,数字,布尔值)的对象包装器,这些包装类型允许你在基本数据类型上执行对象操作,因为它们提供了一组方法和属性,以便更轻松地操作基本数据类型的值,在调用基本数据类型的属性或方法时JavaScript会在后台隐式地将基本类型的值转换为对象

2.JavaScript中三种主要包装类型

  1. 1.String包装类型:
  • 用于字符串的包装类型是String
  • 可以在字符串上调用各种方法,如length()、charAt()、subString()等
  • 例如:var str = "Hello,World"; var strObject = new String(str)
  1. 2.Number包装类型:
  • 用于数字的包装类型是Number
  • 可以在数字上调用各种方法,如toFixed()、toPrecision()等
  • 例如:var num = 42;var numObject = new Number(num);
  1. 3.Boolean 包装类型:
  • 用于布尔值的包装类型是Boolean
  • 可以在布尔值上调用方法,如toString()等
  • 例如:var bool = true;var boolObject = new Boolean(boolean);

3.通常情况下的包装类型

通常情况下,javaScript会在需要时候自动创建和销毁这些包装对象,以便你可以直接操作基本数据类型,而不需要显式创建包装对象

const a = 'abc';
a.length; //3
a.topUpperCase() //ABC

在访问'abc'.length 时,JavaScript 将'abc'在后台转换成String('abc'),然后再访问其length属性。

除了将基本类型转换为包装类型,JavaScript也可以使用valueOf()方法将包装类型倒转成基本类型

var a = 'abc'
var b = Object(a);
var c = b.valueOf(); //'abc'

4.自动装箱与自动拆箱

前面提到了,JavaScript通常会在需要时自动创建和销毁这些包装对象,这个自动的包装和拆包过程通常被称为自动装箱(boxing)自动拆箱(unboxing)

  • 自动装箱(boxing):当你使用基本数据类型的值(如字符串、数字、布尔值)调用对象方法或访问属性时,JavaScript会自动创建对应的包装对象,以便执行操作。这将基本数据类型封装到一个对象中,使你能访问对象的方法和属性。这是发生在需要对象而提供基本数据类型的情况下的情况。
  • 自动拆箱(unboxing):当你完成对包装对象的操作后,JavaScript会自动将其拆箱,将包装对象转换为基本类型的值。这使得你可以在不需要对象的情况下,以基本数据类型的形式继续使用。

这些自动装箱和自动拆箱机制使得JavaScript更灵活,允许你在基本数据类型和对象之间无缝切换,但同时也需要避免造成潜在的问题