使用 Javascript IFFE 得到 Uncaught TypeError 不是一个函数
With a Javascript IFFE getting a Uncaught TypeError is not a function
我试图在 JavaScript 中编写一些匿名函数 IFFE 的东西,但我不明白为什么我会收到这个错误
Uncaught TypeError: dM.getResources is not a function
Fiddle 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
是一个对象
但是使用这段代码我不确定为什么会出错
同上 Fiddle --> https://jsfiddle.net/MillerDev/5qmnqr6q/
reportGroupDataManager
是构造函数,不是对象。但是您期待 reportGroupDataManager
创建的对象。因此 IIFE 应该是这样的:
(function(){
// ...
})($, new reportGroupDataManager(), data);
dM 不是构造函数,因此您不能使用 "this" 作为对 dM
的引用
你需要'new'这样的功能
function ReportGroupDataManager(){
this.getResources = function(){
return object
}
}
let reportGroupDataManager = new ReportGroupDataManager()
(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);
我试图在 JavaScript 中编写一些匿名函数 IFFE 的东西,但我不明白为什么我会收到这个错误
Uncaught TypeError: dM.getResources is not a function
Fiddle 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
是一个对象
但是使用这段代码我不确定为什么会出错
同上 Fiddle --> https://jsfiddle.net/MillerDev/5qmnqr6q/
reportGroupDataManager
是构造函数,不是对象。但是您期待 reportGroupDataManager
创建的对象。因此 IIFE 应该是这样的:
(function(){
// ...
})($, new reportGroupDataManager(), data);
dM 不是构造函数,因此您不能使用 "this" 作为对 dM
的引用你需要'new'这样的功能
function ReportGroupDataManager(){
this.getResources = function(){
return object
}
}
let reportGroupDataManager = new ReportGroupDataManager()
(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);