1

有时当我需要一个静态变量时,我会使用并立即调用函数表达式 (IIFE) - example1。

(function(){
    var private_statik = 'hi',
        publik = {};
    return publik;
}())

其他时候,我只是将它们作为属性添加到需要它们的函数中-example2。

function foo () {
}
foo.statik = 'hello';

Example1 很好,因为我得到了封装(隐私)的好处。示例 2 很好,因为它很简单,并且没有自动执行的开销。

还有其他需要考虑的事情吗?

我拥有的特定案例是换页器 - sFlipPage(). 我想将所有 DOM 元素缓存在一个静态位置,以便它们在每次调用时都可用,并且每次调用函数时都不必从 DOM 中提取它们。

谢谢!

4

1 回答 1

0

主要区别在于隐私和执行顺序。使用 IIFE,您可以将静态变量设为私有。使用普通功能,您不能。为了鼓励良好的 OO 设计(封装),我建议默认使用 IIFE。

权衡是立即调用 IIFE,而不仅仅是在您需要该特定对象时。

于 2013-02-11T21:05:09.213 回答