一、基本包装类型
即把简单的数据类型包装成为复杂的数据类型,这样,基本数据类型就有了属性和方法。
str是一个简单的数据类型,按道理基本数据类型是没有属性和方法的,而对象才有属性和方法,但是上面的代码却可以执行
即这是因为js会把基本数据类型包装为复杂数据类型,其执行效果如下:
①> 生成临时变量,把简单的数据类型包装为复杂数据类型
var temp = new String('cccc');
②> 赋值给声明的字符变量
str = temp;
③>销毁临时变量
temp = null;
二、字符串的不可变
指的是里面的值不可变,虽然看上去改变了内容,但其实只是地址变了(内存中新开辟了一个内存空间) ← 这个特点就是字符串的不可变
当重新给 str 赋值的时候,常量 ccc 不会被修改,依然在内存中↓
所以,由于字符串的不可变,在大量拼接的字符串的时候会有效率问题,所以不要大量的拼接字符串。
三、根据字符返回位置
字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串。