我在我的应用程序中有一些模块,它们依赖于来自服务器的数据。正如模块模式所建议的,我将模块实现为IIFE,但为了能够将它们作为ajax请求的回调引用,我正在考虑将它们定义为常规函数,并在回调中对它们进行初始化(参见另一篇文章中的答案以供参考)。无论我往哪里看,模块模式都是由IIFE组成的。将它们用作我在AJAX回调中实例化的常规函数有什么缺点(如果有的话)?这是一个很好的实践吗?
发布于 2015-07-19 00:52:08
看看前一篇文章中的以下示例:
getAJAX(url, function(data){
// write any code that want data from Ajax.
}, true);这段代码包含了生命函数的调用。在这里,它也称为
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
https://stackoverflow.com/questions/31492081
复制相似问题