Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在函数之后运行原型函数_Javascript_Node.js_Express_Prototype - Fatal编程技术网

Javascript 在函数之后运行原型函数

Javascript 在函数之后运行原型函数,javascript,node.js,express,prototype,Javascript,Node.js,Express,Prototype,我正在尝试学习更多关于javascript原型的知识(我想这就是所谓的javascript原型)。我看到一些NodeJS模块的函数调用方式如下:something.funcA().funcB().funcC()我正在尝试复制它。我怎么做?它叫什么名字 这就是我迄今为止从尝试中得到的: var total = { t: 0 }; module.exports.calculate = function() { var calc = {}; calc.result = functi

我正在尝试学习更多关于javascript原型的知识(我想这就是所谓的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()
有效,但在
add()
之后运行
sub()
时无效:

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

因为
add()
不返回任何内容,所以这不起作用


您可能希望返回
this

这与原型无关;它只是一个返回值的普通函数。
TypeError:calc.calculate(…).add(…).sub不是一个函数,在添加
后返回此值。使用
返回此值让它为我工作。您能否将问题中的代码更新为您当前拥有的代码?我相信在这种情况下,
this
将是
calc
。它似乎对我来说运行良好:。OP,你确定需要正确的文件吗?我的代码中有这样一个文件:
calc.add=function sub(num){
。当然不行。非常感谢你的帮助。
TypeError: Cannot read property 'sub' of undefined