2016-05-16 38 views
0

我的代碼一點塊用於轉化縮寫Acronyms.parse([對象]。功能)不是一個函數

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

new Acronyms.parse()試圖獲得Acronyms.parse並將其用作構造函數。

取而代之,您要使用Acronyms作爲構造函數,並調用該實例的parse方法。這可以通過

new Acronyms().parse() // preferred way 
(new Acronyms).parse() // alternative 

這是在實例化構造函數時忽略括號不是一個好主意的原因。

0

您需要實例使用new Acronyms(),並然後你可以叫parse()一個Acronyms對象。因爲它試圖使用Acronyms.parse作爲構造函數,但該函數不存在(因爲它說),因爲parseprototype之下。

相反,使用這樣的:

new Acronyms().parse('Portable Network Graphics')) 
相關問題