首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >JS封装- IIFE与常规功能

JS封装- IIFE与常规功能
EN

Stack Overflow用户
提问于 2018-04-11 13:46:36
回答 1查看 571关注 0票数 1

学习JS 模块模式

在这个用例中,我试图找出生活和常规功能之间的区别。看起来,IIFE的唯一优点是我的模块变成了一个对象(因为IIFE会立即返回),所以我不需要在模块上使用调用/param ()语法。

还有其他好处吗?考虑以下代码:

代码语言:javascript
代码运行次数:0
运行
复制
//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字

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-11 13:48:57

唯一的不同之处在于您在执行函数时。在第二个示例中,如果要调用另一个方法(或多次调用privateMethod ),则必须再次执行它(并不理想):

代码语言:javascript
代码运行次数:0
运行
复制
HelloWorld().privateMethod();
HelloWorld().privateMethod(); // Calls HelloWorld a second time, creating a
                              // whole new object to make the call on (bad idea)

...or记住第一次执行的结果--D重用它:

代码语言:javascript
代码运行次数:0
运行
复制
var hw = HelloWorld();
hw.privateMethod();
hw.privateMethod();

...at,您将返回到第一个示例。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49776828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档