包含with require后,对象方法不可用

时间:2013-07-17 03:18:00

标签: node.js

我正在使用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的基本掌握并没有帮助我解决这个问题,而不仅仅是搜索论坛。

1 个答案:

答案 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();