Я пытаюсь создать функцию, которая загружает скрипт по требованию. Это мой текущий код:
function loadScript(src, name = null)
{
var dfd = jQuery.Deferred();
if (name === null) {
name = src.split(/\\|\//); // split by folder separator
name = name[(name.length - 1)].split('.'); // catch last index & split by extension
name.splice(name.length - 1, 1) // Remove last
name = name.join('.'); // add points in the middle of file name
}
if ( typeof name === 'function' ) return dfd.promise().resolve(name);
$.getScript( src )
.done(function( script, textStatus ) {
dfd.resolve(name);
})
.fail(function( jqxhr, settings, exception ) {
dfd.reject(exception);
});
return dfd.promise();
}
Моя проблема в этой части кода:
if ( typeof name === 'function' ) return dfd.promise().resolve(name);
Где имя - это переменная, которая содержит имя нужной функции для проверки, но не реальное имя функции, в результате чего функция никогда не оценивается как «функция».
Я пробовал:
typeof `${name}` // resulting a "string"
eval("typeof name === 'function'") // But my node system not accept eval due to a potentially security risk
Сколько альтернатив у меня есть?