您可以告诉我为什么我无法实例化以下类/对象吗?
function Arbitrage(odds1, odds2, investment)
{
this.investment = investment;
this.odds1 = odds1;
this.odds2 = odds2;
this.arbPercent = function() {
return 1.0/this.odds1 + 1.0/this.odds2;
};
this.profit = function() {
return this.investment / this.arbPercent() - this.investment;
};
this.individualBets = function() {
return {
odds1bet : this.investment/this.odds1/this.arbPercent(),
odds2bet : this.investment/this.odds2/this.arbPercent()
};
};
};
module.exports = Arbitrage;
我这样称呼它:
var utility = require('../businesslogic/utility');
...
router.post('/calculate', function(req, res)
{
var arbit = new utility.Arbitrage(req.body.odds1, req.body.odds2, req.body.investment);
res.json({
arbPercentage : arbit.arbPercent(),
profit : arbit.Profit(),
indvBets : arbit.individualBets()
});
});
第一行var arbit = new utility.Arbitrage(...)
正在抛出错误。
它说TypeError: undefined is not a function
我已经检查过utility
不是null或类似的东西。所有构造函数参数都可以。
我对javascript不是很熟悉,任何帮助都将不胜感激。感谢。
答案 0 :(得分:3)
您正在直接导出Arbitrage
课程,因此在您需要之后
var utility = require('../businesslogic/utility');
utility
实际上是您的Arbitrage
类,这意味着typeof utility === 'function'
。
我可以看到两种解决方法。
1。更改您需要Arbitrage
课程的方式:
var Arbitrage = require('../businesslogic/utility');
// ...
var arbit = new Arbitrage(...);
2。或者更改导出方式:
exports.Arbitrage = Arbitrage;
答案 1 :(得分:-1)
这是因为你导出它的方式
你应该使用:
module.exports.Arbitrage = Arbitrage;
然后你可以像这样实现:
var Arbitrage = require('../businesslogic/utility');
var varbitrage = new Arbitrage();