课程
/前端开发
/JavaScript
/JavaScript深入浅出
老师,按照你说的str加.t的属性时候,先把str对象转化成一个临时的包装对象,再次访问会被销毁,那岂不是str.length也不能访问?
2015-03-06
源自:JavaScript深入浅出 1-4
正在回答
str是string(基本类型),本身是没有方法的。
当尝试把基本类型的str当做对象一样访问时,例如:str.length;
解释器会创建一个临时的包装对象,伪代码:
[[tempObj]] = new String(str);
[[tempObj]].length; // 返回具体的length;
delete [[tempObj]]; // 销毁临时对象
重复访问str.length会重复创建这个临时对象。
所以str.t赋值可以成功,但再次访问str.t返回undefined,因为每次创建的临时包装对象都是不同的。
qq_昔颜
明白了
举报
由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握
1 回答临时对象创建后被销毁
2 回答有关临时对象被销毁的问题。
4 回答js包装对象
2 回答对象创建方法
3 回答关于JS里的对象。创建函数对象和函数对象属性的调用。