我正在使用Node.js模块,但我仍然坚持如何以一种使方法可访问的方式导出原型。
例如,请使用以下代码:
var myobj = function(param) {
this.test = 'a test';
return this.param = param;
};
myobj.prototype = {
indexpage: function() {
console.log(this.test);
return console.log(this.param);
}
};
var mo = new myobj('hello world!');
mo.indexpage();
我的结果符合预期:
a test
hello world!
如果我使用相同的代码并将其放在另一个带有module.exports的文件中:
somefile.js
var myobj = function(param) {
this.test = 'a test';
return this.param = param;
};
myobj.prototype = {
indexpage: function() {
console.log(this.test);
return console.log(this.param);
}
};
// the only line that is different
module.exports = myobj;
app.js代码
var MyObj = require('myobj.js');
var mo = new MyObj('hello world!');
mo.indexpage();
现在我得到TypeError: Object #<Object> has no method 'indexpage'
我哪里错了?我已经在这个问题上工作了好几个小时;我对javascript的基本掌握并没有帮助我解决这个问题,而不仅仅是搜索论坛。
答案 0 :(得分:1)
您return
来自构造函数的值。
var myobj = function(param) {
this.test = 'a test';
return this.param = param;
};
应该是:
var myobj = function(param) {
this.test = 'a test';
this.param = param;
};
由于回归,你真正在做的是
var mo = 'hello world!';
mo.indexpage();