锁定老帖子 主题:关于js函数占用内存的疑问
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-03-13
最后修改:2008-11-20
<ul id="ul1"> <li>1</li> <li>2</li> <li>3</li> </ul> <script> var lis = document.getElementById('ul1').getElementsByTagName('li'); for(var i=0;i<lis.length; i++) { lis[i].onclick=function(){ alert(this.firstChild.nodeValue); }; } </script> 请问匿名函数是否占用了3份内存? 恳请赐教! xieye 20080313 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-03-13
对,三个Function实例,其引用不相等,即
lis[i].onclick != lis[j].onclick (i!=j) |
|
返回顶楼 | |
发表时间:2008-03-13
我更关心的是占用客户机器的内存是否更多,还是只有一份?
|
|
返回顶楼 | |
发表时间:2008-03-13
是占用了三个。。
这里的三个function 相当于new 了三次虽然new 的三个值是一样的。。(效果是一样的) |
|
返回顶楼 | |
发表时间:2008-03-13
其实楼上的已经回答了你呀。。
|
|
返回顶楼 | |
发表时间:2008-03-13
不对,!=并不代表内存如何实现,我认为js解释器是当成一个function对象的,优化
|
|
返回顶楼 | |
发表时间:2008-03-13
同意楼上 这个问题好像以前讨论过
印象中 hax 和 afcn0 都参与过那个讨论 呵呵 |
|
返回顶楼 | |
发表时间:2008-03-13
同意前两位的观点。
Function类型是JS中很特殊的类型。 可以试着在debug环境下做做实验并观察之。 |
|
返回顶楼 | |
发表时间:2008-03-14
我觉得没必要考虑那么多,研究这些还不如优化上层代码。管js解释器到底是不是对这类匿名函数进行优化,尽量确保不生成相同的匿名函数,是最安全最高效的。
和其他语言的一样,把公用代码抽象成接口。 |
|
返回顶楼 | |
发表时间:2008-03-14
ajaxgo 写道 对,三个Function实例,其引用不相等,即
lis[i].onclick != lis[j].onclick (i!=j) 我还是同意你的观点。。。我也赞成。。有三个function 实例。。既然有三个实例。。就会占用三分内存。。。 |
|
返回顶楼 | |