在函数后运行原型函数

时间:2016-04-11 19:30:18

标签: javascript node.js express prototype

我试图更多地了解javascript原型(我想这就是所谓的)。我看到一些NodeJS模块的函数调用如下:something.funcA().funcB().funcC();我试图重现它。我怎么能这样做以及它如何调用?

这是我到目前为止所做的尝试:

var total = { t: 0 };

module.exports.calculate = function() {
    var calc = {};

    calc.result = function result() {
        return total.t;
    }

    calc.add = function add(num) {
        total.t += num;
        return this;
    }

    calc.sub = function sub(num) {
        total.t -= num;
        return this;
    }

    return calc;
};

当我调用该函数时:

calc = require('../helpers/calculate');

// 5 - 1 + 3 = 7
calc.calculate().add(5).sub(1);
calc.calculate().add(3);

console.log(calc.calculate().result());

正在运行add(),但在sub()之后运行add()时却无法运行:

TypeError: Cannot read property 'sub' of undefined

1 个答案:

答案 0 :(得分:3)

add(5).sub(1)sub()返回的对象调用add()

由于add()没有返回任何内容,因此无效。

您可能想要返回this