繁体   English   中英

无法在javascript(node.js)中实例化对象

[英]Can't instantiate object in javascript (node.js)

嗨,有人可以告诉我为什么我不能实例化以下类/对象吗?

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不太熟悉,不胜感激。 谢谢。

您将直接导出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;

这是因为您导出它的方式

您应该使用:

module.exports.Arbitrage = Arbitrage;

然后您可以像这样实例化:

var Arbitrage = require('../businesslogic/utility');
var varbitrage = new Arbitrage();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM