学习JS 模块模式。
在这个用例中,我试图找出生活和常规功能之间的区别。看起来,IIFE的唯一优点是我的模块变成了一个对象(因为IIFE会立即返回),所以我不需要在模块上使用调用/param ()
语法。
还有其他好处吗?考虑以下代码:
//IIFE
var HelloWorldEncapsulated = (function(){
return {
privateMethodEncapsulated: function () {
console.log('ayy lmao encapsulated');
}
}
})();
HelloWorldEncapsulated.privateMethodEncapsulated();
//Just a function
var HelloWorld= function(){
return {
privateMethod: function () {
console.log('ayy lmao');
}
}
};
HelloWorld().privateMethod();
再说一遍,除了使用和不使用()
之外,这两者之间还有什么区别吗?似乎privateMethod
就像生活中一样隐藏在非生命的功能中。这里的代码,以防您不想键入2字
发布于 2018-04-11 05:48:57
唯一的不同之处在于您在执行函数时。在第二个示例中,如果要调用另一个方法(或多次调用privateMethod
),则必须再次执行它(并不理想):
HelloWorld().privateMethod();
HelloWorld().privateMethod(); // Calls HelloWorld a second time, creating a
// whole new object to make the call on (bad idea)
...or记住第一次执行的结果--D重用它:
var hw = HelloWorld();
hw.privateMethod();
hw.privateMethod();
...at,您将返回到第一个示例。
https://stackoverflow.com/questions/49776828
复制相似问题