想一下:为何String类型的值能够调用某些方法和访问某些属性呢?
在基本数据类型中有3个特殊的存在:String Number Boolean
这三个基本类型都有本身对应的包装对象。包装对象,其实就是对象,有相应的属性和方法。调用方法的过程,是在后台偷偷发生的,因此咱们称做为基本包装类型。
//咱们日常写程序的过程:
var str = 'hello'; //string 基本类型
var s2 = str.charAt(0); //在执行到这一句的时候 后台会自动完成如下动做 :
//后台偷偷发生的
(
var _str = new String('hello'); // 1.建立String类型的一个实例
var s2 = _str.chaAt(0); // 2 在实例上调用指定的方法,而且返回结给s2
_str = null; // 3.销毁这个实例
)
alert(s2);//h
alert(str);//hello
在看一个例子
var str = 'string';
str.pro = 'hello';
console.log(str.pro);
当执行 str.pro = 'hello' 时,实际上内部建立了一个基本包装类型的实例,而后给这个实例的 pro 属性赋值为 hello,实例建立后立刻销毁了,当下一次试图获取 str.pro 的值时,又会建立一个基本包装类型的实例,显然新建立的实例时没有 pro 属性的,为 undefined,因此最后输出 undefined 。