既然js中的基本类型没有属性和方法那么为什么对字符串进行subString()方法可以呢?基本类型不应该没有方法的吗?
这就是基本包装类型啦!
ECMAScript提供了三个特殊的引用类型,Boolean,String,Number。
这些类型与其他引用类型相似,但也有各自基本的类型相应的特殊行为,每种包装类型都映射到同名的基本类型。
实际上每读取一个基本类型的值,都会创建一个对应的基本包装类型的对象,从而能够调用一系列方法来操作这些数据。
var str1 = "yan gxunwu";
var str2 = str1.subString(3);
调用第二行代码时,访问过程处于一种读取模式,也就是从内存中读取这个字符串的值。而在读取这个值时后台自动完成下列处理:
- 创建String()类型的实例。
- 实例上调用指定的方法。
- 销毁实例
var s1 = new String("yangxunwu");
var s2 = s1.subString(2);
s1 = null;
包装类型与引用类型区别就是生存期,包装类型只存在一行代码的执行瞬间,然后即被销毁。而一般引用类型在离开作用域前一直存在内存中。