我试图更多地了解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
答案 0 :(得分:3)
add(5).sub(1)
对sub()
返回的对象调用add()
。
由于add()
没有返回任何内容,因此无效。
您可能想要返回this
。