我试图用JavaScript编写一些匿名函数IFFE的东西,但我不明白为什么会收到此错误Uncaught TypeError: dM.getResources is not a function
小提琴https://jsfiddle.net/MillerDev/5qmnqr6q/
是什么原因造成的?
reportGroupDataManager(通常是reportGroupDataManager.js文件)
var reportGroupDataManager = (function() {
var self = this;
// cannot do this below as dM.getResources is not a function
//self.getResources = "blah";
self.getResources = function() {
return object;
// return ajaxHelper.get(actions.adminReports.getResourceFileUrl, {});
};
console.log('reportGroupDataManager');
return self;
});
数据(当前为占位符)
function data() {
console.log('in data');
}
IFFE
(function(jQ, dM, data) {
var self = this;
var initializePage = function () {
console.log('in init');
};
dM.getResources()
.done(initializePage, function(result) {
console.log('in fx');
console.log(result);
console.log(result.CannotDeleteWithChild);
});
})($, reportGroupDataManager, data);
因此,通常
dM.getResources()
将从reportGroupDataManager中获取数据,其中result
是对象但是用这个代码我不确定为什么会出错
与上述相同的小提琴-> https://jsfiddle.net/MillerDev/5qmnqr6q/
最佳答案
reportGroupDataManager
是构造函数,而不是对象。但是,您期望由reportGroupDataManager
创建的对象。因此,IIFE应该是这样的:
(function(){
// ...
})($, new reportGroupDataManager(), data);