JS 提供 3 个特殊的引用类型: Boolean Number String
每当读取一个 基本类型值 时,后台就会创建一个对应的 基本包装类型 的对象,从而让我们能够调用一些方法来操作这些数据.
来看下面的例子.
1 | var s1 = 'some text' |
这个例子中的变量 s1 包含一个字符串, s1 是 基本类型值.
之前的文章说过,基本类型没有方法和属性,那这里为什么可以用 var s2 = s1.length呢?
其实,为了让我们实现这种直观的操作,后套已经自动完成了一系列的处理.
具体说就是,当我们访问这个这个基本类型值时,后台自动完成了一下步骤:
1. 创建 String 类型的一个实例;
2. 在实例上调用指定的方法;
3. 销毁这个实例
代码表现为:
1
2
3
4 // 执行 s2 = s1.length 时,后台完成以下 3 步
var s1 = new String('some text')
var s2 = s1.length
s1 = null
这也解释了为什么基本类型不能添加属性和方法
1 | var s1 = 'halo' |
在此,第二行代码给 s1 添加一个 color 属性.但是,第三行代码访问 s1 时,其 color 属性不见了.
这是因为第二行创建的 String 对象在执行第三行代码前已经被销毁了.
执行第三行代码时又创建了自己的 String 对象,而该对象没有 color 属性