问答详情
源自:1-4 [JavaScript]包装对象

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

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

提问者:sunny_1988 2015-03-06 15:18

个回答

  • Bosn
    2015-03-09 10:37:22

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


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

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

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

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

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


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

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

  • sinkery
    2015-03-11 20:32:14

    明白了