我有一个名为“LayoutProcessor”.js的javascript类,定义如下:
define('layoutProcessor', ['jquery'], function($) {
"use strict";
function LayoutProcessor() {
return (this);
}
LayoutProcessor.prototype.process = function() {
console.log('inside process');
};
LayoutProcessor.prototype.responseHandler = function() {
console.log('inside responseHandler');
};
return new LayoutProcessor();
});
我正在尝试访问名为“test.js”的另一个javascript类中的方法“process”,其定义如下:
test.js
require(['LayoutProcessor.js','jquery'], function(layoutProcessor,$) {
$(document).ready(function(){
var response = new LayoutProcessor().process();
});
})
但是我收到了类型错误:
new LayoutProcessor()
不是构造函数。
答案 0 :(得分:1)
根据OP的实施,它应该是
var response = layoutProcessor.process();
不是
var response = new LayoutProcessor().process();
请参阅 fiddle
错误消息是合适的,因为它不是构造函数而是对象。
new LayoutProcessor() is not a constructor.
LayoutProcessor.js返回Object
。
return new LayoutProcessor();
答案 1 :(得分:0)
这些代码很少发生。
当前编写的方式,LayoutProcessor模块返回构造对象,而不是要调用的构造函数。
要调用它,您可以使用:
var response = layoutProcessor.process();
然而,这是一个单身人士,我怀疑你是什么意思。
在单例中,如果是layoutProcessor,则只有一个实例,因为该实例是由LayoutProcessor模块创建的。
我相信您所说的代码更像是这样,您可以为需要它的每个人创建对象的新实例:
<强> layoutProcessor 强>
define('layoutProcessor', ['jquery'],
function($) {
"use strict";
//----------------------------------------
/**
* constructor
*/
function LayoutProcessor() {
return (this);
}
LayoutProcessor.prototype.process = function() {
console.log('inside process');
};
LayoutProcessor.prototype.responseHandler = function() {
console.log('inside responseHandler');
};
// Note: Return a FUNCTION reference to be called later.
return LayoutProcessor;
}
);
<强> test.js 强>
require(['LayoutProcessor.js', 'jquery'],
function(LocalLayoutProcessor, $) {
$(document).ready(function() {
var response = new LocalLayoutProcessor().process();
});
}
)
答案 2 :(得分:0)
唯一问题是return
声明。它应该是
return LayoutProcessor;