reportGroupDataManager

reportGroupDataManager

我试图用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);

08-19 05:08