【问题标题】:NodeJS Module.Exports Object Prototype ProblemNodeJS Module.Exports 对象原型问题
【发布时间】:2011-06-22 22:13:05
【问题描述】:

我刚刚接触到 NodeJS,并且在尝试为其创建(非常)基本的 MVC 实现时遇到了障碍。

归结为以下几点。我有一个控制器的主要对象,我正在尝试为其创建原型;代码如下:

var Controller = function(obj) {

    this.request = null;
    this.response = null;
    this.params = null;
    this.layout = 'default';    

}

Controller.prototype = new function() {

    this.processAction = function(action) {
        console.log("Processing Action.");
    }

}

module.exports = new Controller();

我已经针对这个问题删除了大部分值/函数,因为它们并不真正相关。基本上,根据我的理解,使用 module.exports 将使用 require() 函数将对象导出到变量。我的调度程序中有以下内容:

var Controller = require('./Controller.js');

问题是每当我打印出变量 Controller 时,我都会得到对象的第一部分,但原型尚未包含在内。请参阅以下打印输出:

{ request: null,
  response: null,
  params: null,
  layout: 'default' }

因此调用原型函数 Controller.processAction() 会导致无方法错误。我是在声明这个原型错误还是我缺少与 NodeJS 相关的东西?

[编辑]

我也尝试了以下样式添加原型,但无济于事。

Controller.prototype = {
    'processAction' : function(action) {
        console.log("Processing Action");
    }
}

[编辑 2]

没关系,上面工作的 console.log 没有报告原型中的附加功能,很有趣。

【问题讨论】:

  • 您的 exact 代码工作正常。你有没有试过打电话给.processAction(),或者你只是假设因为它没有出现在日志中它不存在?某些版本的节点无法正确遍历 __proto__
  • 你说得对。它没有出现在日志中,所以我认为它不存在。感谢您的帮助。
  • 如果你不知道new function()返回一个对象而不是一个函数。

标签: javascript node.js function-prototypes


【解决方案1】:
Controller.prototype = {
    processAction : function(){
        // code
    },

    anotherMethod : function(){
    }
}

【讨论】:

    【解决方案2】:

    使用:

    Controller.prototype = {
        processAction : function(action) {
            console.log("Processing Action.");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-14
      • 1970-01-01
      • 1970-01-01
      • 2014-01-13
      • 2019-11-18
      • 2016-12-09
      • 1970-01-01
      • 2023-03-06
      相关资源
      最近更新 更多