1.包装类型简介
在JavaScript中,包装类型是指基本数据类型(如字符串,数字,布尔值)的对象包装器,这些包装类型允许你在基本数据类型上执行对象操作,因为它们提供了一组方法和属性,以便更轻松地操作基本数据类型的值,在调用基本数据类型的属性或方法时JavaScript会在后台隐式地将基本类型的值转换为对象
2.JavaScript中三种主要包装类型
- 1.String包装类型:
- 用于字符串的包装类型是String
- 可以在字符串上调用各种方法,如length()、charAt()、subString()等
- 例如:var str = "Hello,World"; var strObject = new String(str)
- 2.Number包装类型:
- 用于数字的包装类型是Number
- 可以在数字上调用各种方法,如toFixed()、toPrecision()等
- 例如:var num = 42;var numObject = new Number(num);
- 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更灵活,允许你在基本数据类型和对象之间无缝切换,但同时也需要避免造成潜在的问题