Итак, как и другие говорили, определенно лучший вариант:
window['myfunction'](arguments)
И, как сказал Джейсон Бантинг , он не будет работать, если имя вашей функции включает объект :
window['myobject.myfunction'](arguments); // won't work
window['myobject']['myfunction'](arguments); // will work
Итак, вот моя версия функции, которая будет выполнять все функции по имени (включая объект или нет):
my = {
code : {
is : {
nice : function(a, b){ alert(a + "," + b); }
}
}
};
guy = function(){ alert('awesome'); }
function executeFunctionByName(str, args)
{
var arr = str.split('.');
var fn = window[ arr[0] ];
for (var i = 1; i < arr.length; i++)
{ fn = fn[ arr[i] ]; }
fn.apply(window, args);
}
executeFunctionByName('my.code.is.nice', ['arg1', 'arg2']);
executeFunctionByName('guy');
Примечание: вы также можете разработать свой собственный внешний инструмент , чтобы открыть файл в проводнике Windows
, или вы можете использовать плагин eclipse, например StartExplorer .
Примечания к MacOS:
В Mac OS X замените местоположение на
/ usr / bin / open
, а аргументы должны будь просто$ {container_loc}
.
Но Адам предупреждает :
Не работает - OSX, вам нужно заключить кавычки вокруг
$ {container_loc}
, иначе вы часто появляются странные сообщения об ошибках, потому что он не может справиться с пробелами в именах файлов.
Но user2036022 подробности :
вы можете использовать -R "$ {resource_loc}" в macosx как аргумент
/ usr / bin / open
для согласования с другими подобными инструментами.
Откройте Свойства файла (щелкните правой кнопкой мыши-> Свойства), и в диалоговом окне будет указан полный путь к файловой системе.