0

使用立即调用的函数表达式创建对象时,使用内部或外部对象引用有什么实际区别吗?例子:

var external = (function(){
    var internal = {};
    internal.a = function(){
        //... do stuff
    }
    internal.b = function(){
        internal.a();
        // ^ OR v 
        external.a();
    }
    return internal;
})();

两者都有效。我能想到的唯一区别可能internal是在没有直接调用它的情况下被调用后清理,但这可能没有实际意义,因为同一个对象存在于external. 如果有重复,请原谅我 - 我无法清楚地表达我想知道的内容,以便搜索引擎给我一个明确的答案。

谢谢!

4

2 回答 2

3

它们是完全相同的东西(正如@Pointy 指出的那样,它们是相同的东西,直到有人external在外面改变),但在external这里使用感觉很奇怪,而且不是很清楚,因为你在它自己的定义中使用它有点。

于 2013-11-26T14:44:49.040 回答
1

一个有趣的区别是对的引用external意味着包含外部var声明的词法范围将从对象内部固定。这可以解释为内存泄漏,具体取决于对象发生的情况。

于 2013-11-26T14:48:20.823 回答