Acronyms.parse([object] .function)不是函数

时间:2016-05-16 19:55:03

标签: javascript

我有一小段代码用于转换首字母缩略词

var Acronyms = function () {};

Acronyms.prototype.parse = function(string) {
    var array = string.split(' ');
    var answer = '';
    for (var i = 0; i < array.length; i++) {
        answer += array[i][0];
    }
    return answer;
};

module.exports = Acronyms;

与此测试一起使用时

describe('Acronyms are produced from', function(){
  it('title cased phrases', function() {
    expect(new Acronyms.parse('Portable Network Graphics')).toEqual('PNG');
  });
});

给我:TypeError:Acronyms.parse不是一个函数 当我试图搜索尽可能多的关键词时,我一直看到有关半冒号的事情,所以可能问题就在那里?我不认为是,但也许我错过了一些东西。

2 个答案:

答案 0 :(得分:2)

new Acronyms.parse()尝试获取Acronyms.parse并将其用作构造函数。

相反,您希望使用Acronyms作为构造函数,并调用实例的parse方法。这可以通过

来实现
new Acronyms().parse() // preferred way
(new Acronyms).parse() // alternative

这是在实例化构造函数时省略括号不是一个好主意的原因。

答案 1 :(得分:0)

您需要使用Acronyms实例化new Acronyms()对象,然后然后,您可以调用parse()。因此,它尝试使用Acronyms.parse作为构造函数,但该函数不存在(正如它所说),因为parse位于prototype。< / p>

相反,请使用它:

new Acronyms().parse('Portable Network Graphics'))