我得到了:不能打电话给方法' someMethodName'尝试访问javascript clas中的对象时未定义

时间:2015-04-30 17:16:39

标签: javascript

我几乎是JavaScript的新手,我正在尝试访问类中的对象。这是我在一个名为analysis.po.js的文件中的类定义:

var AnalysisPage = function () {
    (some  code here)
    this.getSpousesCreditBureau = function() {
        return {
            pdScore: getSpousesCreditBureauElement('pdScore'),
            qualification: getSpousesCreditBureauElement('qualification'),
            estimatedFee: getSpousesCreditBureauElement('estimatedFee'),
            currentDebt:  getSpousesCreditBureauElement('currentDebt'),
            maxDebt: getSpousesCreditBureauElement('maxDebt'),
            arrears: getSpousesCreditBureauElement('arrears'),
            segment: getSpousesCreditBureauElement('segment'),
            bpGlobalRisk: getSpousesCreditBureauElement('bpGlobalRisk'),
            groupGlobalRisk:  getSpousesCreditBureauElement('groupGlobalRisk')
        };
    };
    (some other code here)
};
module.exports = new AnalysisPage();

这是我尝试在另一个名为analysis.spec.js的文件中获取对象getSpousesCreditBerauElement的代码:

var App = require('../app.po.js'),
    Util = require('../util.js'),
    AnalysisPage = require('./analysis.po.js'),
    AnalysisData = require('./analysis.data.js');
(some code here)
var analysis = new AnalysisPage();
Util.verifyElementsAreDisplayed(analysis.getSpousesCreditBureau());
(some other code here)

我得到的错误是: 不能打电话的方法' getSpousesCreditBureau'未定义的

2 个答案:

答案 0 :(得分:2)

您实际上并未导出AnalysisPage,而且您没有正确调用它。

使用以下内容导出课程:

module.exports = AnalysisPage;

比较

module.exports = new AnalysisPage();

导出该类的实例

然后调用它的正确方法是:

var instance = new AnalysisPage();
Util.verifyElementsAreDisplayed(instance.getSpousesCreditBureau());

(原始问题已修改,代码为:)

var analysis = new AnalysisPage();
Util.verifyElementsAreDisplayed(AnalysisPage.getSpousesCreditBureau());

您只能导出实例,在这种情况下请调用它:

var instance = require('./analysis.po.js');
Util.verifyElementsAreDisplayed(instance.getSpousesCreditBureau());

所以在任何地方都没有new

答案 1 :(得分:1)

你有没有尝试过:

var analysis = new AnalysisPage();
Util.verifyElementsAreDisplayed(analysis.getSpousesCreditBureau());

当您访问类似AnalysisPage.getSpousesCreditBureau()的方法时,您不是访问实例,而是访问类定义。