2016-11-14 38 views
0

我試圖讓誰可以調用任何函數的錯誤消息的功能,如果功能不存在 我有這個函數返回的錯誤信息的Javascript:如果功能不存在

var _call = function() { 
    var methodToCall = arguments[0]; 
    delete arguments[0]; 

    try { 
     window[methodToCall](arguments); 
    } 
    catch (err) { 
     console.error(err.message); 
    } 
}; 

我調用這個函數是這樣的:

_call('getMethod', 'lolo', [0, 1, 2]); 

它的工作原理,如果沒有定義的功能,因爲我預期例外,它顯示window[methodToCall] is not a function,我想有functionNotDefined is not a function

+1

如何測試'typeof(methodToCall)==='function''並記錄自己的消息?你當前的catch會捕獲一個函數拋出的錯誤(*是一個函數)。 – Biffen

+0

然後不要使用'err.message'值並定義你自己的。 'methodToCall +「不是函數」' –

+0

Biffen;我嘗試過,但我作爲函數名稱作爲字符串'typeof()'不起作用。半朋友,是的,這是一個好主意,但因爲我不確定這是唯一的錯誤,我將不得不管理我想要使用異常消息:) – Lolo

回答

1
<script> 
window.onload = function() { 
    _call('foo', 'lolo', [0, 1, 2]); 
    // function bar does not exist 
    _call('bar', 'lolo', [0, 1, 2]); 
} 

function foo(a) { 
    console.log('called foo, with arguments "' + JSON.stringify(a) +'"'); 
} 

var _call = function() { 
    var methodToCall = arguments[0]; 
    delete arguments[0]; 
    if (typeof window[methodToCall] !== 'function') { 
    return false; 
    } 
    try { 
    window[methodToCall](arguments); 
    } 
    catch (err) { 
    console.error(err.message); 
    } 
}; 
</script>