01 定义
数字、字符串和布尔在JS中称为基本类型 ,另外 、 和 也属于原始类型。
除了上面六种类型外,其他的都是对象。
为了便于操作基本类型值,JS提供了3 个特殊的引用类型,即包装对象: 、 和 。
包装对象类型与其他引用类型相似,但同时也具有与各自的基本类型相应的特殊行为。
02 理解包装类型
每当读取一个基本类型值的时候,JS就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操作这些数据。
这个例子中的变量 包含一个基本类型字符串,第二行调用了s1 的 方法,并将返回的结果保存在了 中。
字符串是基本类型,不是对象,因而从逻辑上它们不应该有方法。但为了让我们实现这种直观的操作,JS后台会自动完成了一系列的处理。当第二行代码访问s1 时,访问过程处于一种读取模式,也就是要从内存中读取这个字符串的值。
03 创建包装类型
通过调用 、 和 可以显式来创建基本类型的包装对象,但尽量不要这么做,因为这种做法很容易让人分不清是在处理基本类型还是引用类型的值。
使用 调用基本包装类型的构造函数,与直接调用同名的转型函数是不一样的。
在这个例子中,变量 中保存的是基本类型的值25,而变量 中保存的是 的实例。
04 与引用类型区别
引用类型与基本包装类型的主要区别就是对象的生存期。使用 操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中。
而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁。 这意味着我们不能在运行时为基本包装类型值添加属性和方法。
第二行代码试图为字符串 添加一个 属性。但是,当第三行代码再次访问s1 时, 其`color`` 属性不见了。问题的原因就是第二行创建的String 对象在执行第三行代码时已经被销毁了。 第三行代码又创建自己的String 对象,而该对象没有color 属性。
05 属性和方法
使用 可以在控制台中查看包装对象的属性和方法,把所有的属性和方法都研究一边,字符串和数字类型操作就没什么问题了。
的属性和方法,如下图所示。
领取专属 10元无门槛券
私享最新 技术干货