何时使用IIFE与对象文字?

时间:2017-02-14 05:28:47

标签: javascript

我即将开始为应用构建一个小的javascript模块。我已经接触过两种组织代码的方式:对象文字和IIFE。我知道,对于IIFE,所有变量和函数都保持私有,除非另有公开,但是还有其他原因我会在对象文字上使用它吗?

为什么我要使用对象文字:

var gojiraSays = 'Toxic Garbage Island!!!'

var app = {

  printStuff: function(){
    console.log(gojiraSays)
  }

}

......说IIFE版本:

var app = (function(){
  var gojiraSays = 'Toxic Garbage Island!!!'

  var yellGojira = function(){
    console.log(gojiraSays);
  }

  return{
    yellGojira: yellGojira
  }

}());

app.yellGojira();

2 个答案:

答案 0 :(得分:2)

  

模块模式

参考this答案,了解使用Object literal以及显示模块模式(RMP)的优势。

  

IIFE

请参阅this链接以获取有关使用IIFE进行项目结构化的优势的信息。

  

我的建议

我更喜欢使用 RMP ,因为它可以让您有效地分离关注并同时改善可读性

答案 1 :(得分:1)

您应该学习第三种更好的组织模块的方法,即ES6模块,这使得所有这些都无关紧要。

// app.js
const gojiraSays = 'Toxic Garbage Island!!!'

export function printStuff() {
  console.log(gojiraSays)
}

// consumer.js
import {printStuff} from './app';

printStuff();

您需要一些基础设施,例如Babel转换步骤,才能使其发挥作用。