不是IIFE的模块

时间:2015-07-18 14:19:25

标签: javascript ajax module iife

请参阅Data dependency in module

我的应用程序中有几个模块依赖于来自服务器的数据。我将模块实现为IIFE,正如模块模式所暗示的那样,但是为了能够将它们作为ajax请求的回调引用,我正在考虑将它们定义为常规函数,并在回调中初始化它们(请参阅答案中的答案)另一篇文章供参考)。我看的每个地方,模块模式都由IIFE组成。将它们用作我在AJAX回调中实例化的常规函数​​有什么缺点(如果有的话)?这是一个好习惯吗?

1 个答案:

答案 0 :(得分:0)

看看上一篇文章中的以下示例:

getAJAX(url, function(data){
         // write any code that want data from Ajax.
       }, true);
  

此代码包含IIFE函数调用。在这里它被称为   anonymous功能也是。这是一种调用内联函数的方法   与模块化方法无关。

在javascript中查看以下类表示:

var ClassName = function(data, pubsubService) {
var items = [];
// public function
this.generateItems = function(firstItemIndex, stopIndex) {
    var dataLength = data.length;
    stopIndex = (stopIndex < dataLength) ? stopIndex : dataLength;
    items = data.slice(firstItemIndex, stopIndex);
    pubsubService.publish('itemsGenerated');
};
// private function
var getItems = function() {
    return items;
};

return {
    generateItems : generateItems,
    getItems : getItems
};
};
  

这是一个generateItems是公共函数,getItems是私有函数的类。

现在引用你之前的帖子,而不是创建常规函数创建一个类module,其中包含该模块的方法,创建object并调用如下方法:

Var obj = new ClassName(data,pubsubService);
obj.generateItems(firstItemIndex,stopIndex);

我认为这可以帮助您理解这个概念。

请参阅以下链接以了解更多信息:

http://book.mixu.net/node/ch6.html

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript

http://www.htmlgoodies.com/html5/tutorials/create-an-object-oriented-javascript-class-constructor.html#fbid=5m_t2A6hozg