首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在javascript (node.js)中实例化对象

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

Stack Overflow用户
提问于 2014-08-17 00:13:38
回答 2查看 325关注 0票数 1

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

代码语言:javascript
复制
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;

我是这样说的:

代码语言:javascript
复制
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,任何帮助都将不胜感激。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-17 00:20:03

直接导出Arbitrage类,所以在需要它之后

代码语言:javascript
复制
var utility = require('../businesslogic/utility');

utility实际上是您的Arbitrage类,意思是typeof utility === 'function'

我能找到两种方法来修复它。

1.改变了您需要Arbitrage类的方式:

代码语言:javascript
复制
var Arbitrage = require('../businesslogic/utility');
// ...
var arbit = new Arbitrage(...);

2.或更改导出它的方式:

代码语言:javascript
复制
exports.Arbitrage = Arbitrage;
票数 3
EN

Stack Overflow用户

发布于 2014-08-17 00:24:45

这是因为你导出它的方式

你应该使用:

代码语言:javascript
复制
module.exports.Arbitrage = Arbitrage;

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

代码语言:javascript
复制
var Arbitrage = require('../businesslogic/utility');
var varbitrage = new Arbitrage();
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25345190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档