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