【问题标题】:Node.js prototypal inheritance with requireNode.js 原型继承与 require
【发布时间】:2011-09-17 17:35:07
【问题描述】:

当我使用 require 函数时,我在 node.js 中继承两个函数时遇到问题。

这是我的情况:

function administrators () {
    this.user = 'bob';
}
administrators.prototype.print_user = function () {
    console.log(this.user);
}

/*******/


function helper() {}

helper.prototype = new administrators();

helper.prototype.change_administrator = function() {
    this.user = 'john';

}

var h = new helper();

h.print_user();
h.change_administrator();
h.print_user();

正如你在这里看到的,我有两个功能:

  • administrations 只有用户变量和 print_user 函数。
  • helpers 继承自 administrators 的所有内容,然后我们添加 change_administrator,这会更改在 administrators() 中声明的 this.use

问题来了:

我想在单独的文件中包含这些函数(administratorshelper),例如:administrators.jshelper.js

然后我想将这两个文件包含在index.jsrequire 中,并将administrators 变量和函数继承给helper,就像我在上面的示例中所做的那样。

附:我一直在寻找类似的问题,但没有关于这种继承的任何内容。

【问题讨论】:

    标签: javascript inheritance node.js prototype-programming


    【解决方案1】:

    您需要在 helpers.js 文件中要求管理员。

    administrators.js

    function administrators () {
        this.user = 'bob';
    }
    administrators.prototype.print_user = function () {
        console.log(this.user);
    }
    
    module.exports = administrators;
    

    helpers.js

    var administrators = require('./administrators');
    
    function helper() {}
    
    helper.prototype = new administrators();
    
    helper.prototype.change_administrator = function() {
        this.user = 'john';
    };
    
    module.exports = helper;
    

    index.js

    var helper = require('./helpers');
    
    var h = new helper();
    
    h.print_user();
    h.change_administrator();
    h.print_user();
    

    【讨论】:

      【解决方案2】:

      您必须在满足要求的类中手动扩展它们。

      这里的扩展意思是“将方法和属性从一个对象复制到另一个对象”

      或者有助手直接需要管理员

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-30
        • 2013-11-07
        • 2011-09-14
        • 2015-07-07
        • 1970-01-01
        • 2015-11-13
        • 2015-10-12
        相关资源
        最近更新 更多