什么叫基本包装类型
先说一个问题:
先看代码
var str1 = "Hello Word"; var str2 = str1.substring(3);
这个是处理字符串的基本方法,但是字符串是一个基本类型啊,不是对象啊,在逻辑上怎么可能会有方法可以执行呢?但是确实可以执行了,为什么呢?
根据《javascript高级程序设计》一书中说到的:js解析引擎会帮我们处理上面那一段代码,当第二行代码访问 str1 的时候,访问过程处于一种读取模式,也就是要从内存中读取这个字符串的值。在读取模式中访问字符串的时候,后台会自动完成一些处理:
1、创建 String 类型的实例
2、在实例上调用指定的方法
3、销毁这个实例
其实类似于执行了下面的代码:
var str1 = new String('Hello word'); var str2 = str1.substring(3); str1 = null;
//感觉书上说的也不太对,如果最后把 str1 = null 了,那如果访问 str1 的话就不是之前定义的 'Hello world' 了。应该是把 str1转成字符串: str1 = str1.toString();
好了,差不多了。