微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Node.JS中的继承

我正在使用node.js和基于express.js的编程.我曾尝试使用util.inherits在 JavaScript中实现继承.我试过的内容如下:

//request.js
function Request() {
    this.target = 'old';
    console.log('Request Target: ' + this.target);
}

Request.prototype.target = undefined;
Request.prototype.process = function(callback) {
    if (this.target === 'new')
       return true;

    return false;
}

module.exports = Request;

//create.js
function Create() {
    Create.super_.call(this);
    this.target = 'new';
}

util.inherits(Create,Request);

Create.prototype.process = function(callback) {
    if (Create.super_.prototype.process.call(this,callback)) {
        return callback({ message: "Target is 'new'" });
    } else {
        return callback({ message: "Target is not 'new'" });
    }
}

module.exports = Create;

//main.js
var create = new (require('./create'))();
create.process(function(msg) {
    console.log(msg);
});

我的情况是:

我有Request作为基类和Create作为子类. Request具有在Request构造函数中初始化old的字段目标.

现在,我创建Create类对象,首先调用Request构造函数然后用new初始化目标字段.当我调用Create的进程函数时,我希望得到目标的消息是’new’但它返回另一个

我为此寻找了类似的线程,但所有这些都是我尝试过的!任何人都可以解释什么是错的吗?

提前致谢 :)

解决方法

util.inherits真的很尴尬超级_…无论如何,这应该工作:

Create.super_.prototype.process.call(this,callback);

但是真的,

var super_ = Request.prototype;

然后语法变得几乎方便:

super_.process.call(this,callback);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐