首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >给闭包内的一个变量分配一个对闭包的引用--它会泄漏吗?

给闭包内的一个变量分配一个对闭包的引用--它会泄漏吗?
EN

Stack Overflow用户
提问于 2011-10-12 20:04:16
回答 2查看 133关注 0票数 4

我正在看一些JS ViewModel代码,它们使用这个模式来引用外部闭包,以防任何库在调用函数作为回调时更改" this“指针(一定要喜欢JavaScript):

代码语言:javascript
复制
function FruitViewModel {
   var that = this; // <-- HERE

   this.someCallBack = function () {
      that.utilityFunction();
   };

   this.utilityFunction = function () { }
}

我的问题是:这会导致内存泄漏吗?还是会因实现而异?(例如,如果垃圾是从里到外收集的,而不是从外到里)

编辑:请假设在GC考虑将此对象用于集合时,没有任何对象包含对someCallBack的引用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-12 20:11:17

垃圾收集器足够聪明,可以检测到这样的循环引用。这样它就不会泄露了。

票数 1
EN

Stack Overflow用户

发布于 2011-10-12 20:08:47

在所有JS引擎中,只有在父函数中声明的所有函数都不再被引用时,才会收集对象。

我不知道这里有任何相关的GC错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7739788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档