嗨,有人能告诉我为什么不能实例化下面的类/对象吗?
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,任何帮助都将不胜感激。谢谢。
发布于 2014-08-17 00:20:03
直接导出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;发布于 2014-08-17 00:24:45
这是因为你导出它的方式
你应该使用:
module.exports.Arbitrage = Arbitrage;然后你可以像这样实例化:
var Arbitrage = require('../businesslogic/utility');
var varbitrage = new Arbitrage();https://stackoverflow.com/questions/25345190
复制相似问题