首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不是IIFE的模块

不是IIFE的模块
EN

Stack Overflow用户
提问于 2015-07-18 22:19:25
回答 1查看 41关注 0票数 1

请参阅Data dependency in module

我在我的应用程序中有一些模块,它们依赖于来自服务器的数据。正如模块模式所建议的,我将模块实现为IIFE,但为了能够将它们作为ajax请求的回调引用,我正在考虑将它们定义为常规函数,并在回调中对它们进行初始化(参见另一篇文章中的答案以供参考)。无论我往哪里看,模块模式都是由IIFE组成的。将它们用作我在AJAX回调中实例化的常规函数有什么缺点(如果有的话)?这是一个很好的实践吗?

EN

回答 1

Stack Overflow用户

发布于 2015-07-19 00:52:08

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

代码语言:javascript
复制
getAJAX(url, function(data){
         // write any code that want data from Ajax.
       }, true);

这段代码包含了生命函数的调用。在这里,它也称为anonymous函数。它是调用内联函数的一种方式,与模块化方法无关。

请参阅以下javascript中的类表示:

代码语言: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并调用如下方法:

代码语言:javascript
复制
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

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

https://stackoverflow.com/questions/31492081

复制
相关文章

相似问题

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