为了账号安全,请及时绑定邮箱和手机立即绑定

str对象创建临时包装对象的问题

老师,按照你说的str加.t的属性时候,先把str对象转化成一个临时的包装对象,再次访问会被销毁,那岂不是str.length也不能访问?

正在回答

2 回答

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


当尝试把基本类型的str当做对象一样访问时,例如:str.length; 

解释器会创建一个临时的包装对象,伪代码:

[[tempObj]] = new String(str);

[[tempObj]].length; // 返回具体的length;

delete [[tempObj]]; // 销毁临时对象


重复访问str.length会重复创建这个临时对象。

所以str.t赋值可以成功,但再次访问str.t返回undefined,因为每次创建的临时包装对象都是不同的。

9 回复 有任何疑惑可以回复我~
#1

qq_昔颜

老师您好: str.t 是个什么样的属性,是js本身自带的属性还是后来我们自己定义的属性啊?我是这样理解的:str.t=10;我自己这样定义之后,如果js没有对临时对象的销毁功能的话,以后我再得到str.t的值就是10? 这个.t的属性是我自己定义的是吗?
2015-05-08 回复 有任何疑惑可以回复我~

明白了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

str对象创建临时包装对象的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信