有关临时对象被销毁的问题。

来源:1-4 [JavaScript]包装对象

Pray_0

2015-07-27 10:41

当完成访问以后零食对象会被销毁掉,那问什么alert(a.length)返回了6,没被销毁,然而alert( a.t )却返回undifined,被销毁了呢?

写回答 关注

2回答

  • 慕粉3988711
    2016-10-15 22:06:51

    我的理解是,调用length的时候,a会变成String对象,既然是对象那么就有方法和属性,所以就可以使用length方法了,假设a.length显示为6然后销毁,于是我们手贱再来次a.length于是乎再一次a变为了String对象再次调用length属性,显示6后再次销毁;但是a.t=5意味着先将a转换为String对象由于String对象没有t属性,于是a.t在此刻创建了一个临时属性t,它和length相比length早已存在在String中而t却是我们刚刚创建的,于是我们输入完a.t=5;之后t属性立即销毁,如果再次输入a.t显示undefined;这很正常t在前边已被销毁意味着前边我们在String对象创建的临时t属性已被销毁,那么此时我们的t属性编译器怎么能认识?如果我们alert(a.t=5)这时编译器会弹出5这个选框,然后t被销毁,我们再次alert(a.t)会发现是undefined,原因同上t被销毁了,至于length同样也被销毁了,但是length是实打实的存在于String对象中只要转换为String对象,那么String必然有length属性。

  • cainooo
    2015-12-11 12:25:11

    每次将基本数据类型当作对象使用的时候, 是临时包装的,用完一次马上就会删除,当a.length的时候,不管如何创建如何删除,它本来的值就是6是不变的。但是a.t确不一样,它是不存在的,你第一次赋值给a.t的时候创建了临时对象,但是调用完马上删除, 这个时候你在去访问a.t的值, 又建立了一个新的临时对象,肯定值是没有定义过的。

    length是一直存在,而t是不存在的。

    _Jack_...

    请问a.t是什么意思?

    2016-05-13 19:14:58

    共 1 条回复 >

JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281112 学习 · 1020 问题

查看课程

相似问题