4

I am using node.js and programming based on express.js. I have tried to use util.inherits to implement inheritance in JavaScript. What I've tried is as follows:

//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);
});

My scenario is :

I have Request as base class and Create as child class. Request has field target that initialize old in Request constructor.

Now, I create Create class object which first call Request constructor and then initialize target field with new. When I call process function of Create, I expect to get message of target is 'new' but it returns another!

I searched similar threads for this, but all are what i tried! Can any one explain what was wrong?

Thanks in advance :)

1 Answer 1

6

util.inherits has really awkward super_... anyway, this should work:

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

But really,

 var super_ = Request.prototype;

And then the syntax becomes almost convenient:

 super_.process.call(this, callback);
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.