为啥基本类型如string有String的方法 包装对象

五种基本类型除了null、undefined以外都有与之对应的特殊的引用类型——包装类型。当代码被解释执行时,底层会对基本类型做一个类型转换,即将基本类型转换成引用类型,这样就可以调用相应引用类型有权访问到的方法。

例如 str是string(基本类型),本身是没有方法的。

当尝试把基本类型的str当做对象一样访问时,例如:str.length;
解释器会创建一个临时的包装对象,伪代码:
[[tempObj]] = new String(str);
[[tempObj]].length; // 返回具体的length;
delete [[tempObj]]; // 销毁临时对象

重复访问str.length会重复创建这个临时对象。
所以str.t赋值可以成功(临时对象赋值),但再次访问str.t返回undefined(另外的临时对象的值),因为每次创建的临时包装对象都是不同的。

 

http://www.imooc.com/video/5676

 

posted @ 2016-06-01 17:51  a fine day  阅读(103)  评论(0编辑  收藏  举报