是否应该使用IIFE或对象属性来创建静态变量?

时间:2013-01-23 01:04:19

标签: javascript

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

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

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

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

例1是好的b.c.我得到了封装(隐私)的好处。实施例2是良好的b.c.它很简单,并且没有自我执行的开销。

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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