javascript模块创建和初始化

时间:2016-08-12 20:29:20

标签: javascript iife

我的js这样做:

var MyClass ={
        a: 1,
        b: 2,
        init: function(message){ console.log("calling c to say "+message);};
 };

 MyClass.init("hello");

//以上所有代码都在js文件中

我一直看到IIFE模式,但我担心与上面相比,我看不出它带来了什么好处。 我有一个MyClass模块,能够调用方法。使用这种模式有不利之处吗?

1 个答案:

答案 0 :(得分:1)

IIFE用于创建新的函数范围,以避免将变量泄漏到全局范围中:

(function() {
    var x = 1;
    console.log(x); // 1
})();

console.log(x);     // undefined

这与调用存储在对象中的函数基本无关,如示例所示。