0

我正在使用 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 的文件中:

一些文件.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 的基本掌握并没有比搜索论坛更能帮助我解决这个问题。

4

1 回答 1

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();
于 2013-07-17T03:43:27.697 回答