js 中的基本包装类型

什么叫基本包装类型

先说一个问题:

先看代码

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();

好了,差不多了。

原文地址:https://www.cnblogs.com/zxdesign/p/2987210.html