В настоящее время я пишу библиотечную систему
И есть stringArray ['greet', 'name'] в качестве зависимостей в примере кода ниже, однако мне нужно использовать этот stringArray как массив функций, передаваемых в приветствиеToName () с помощью apply (), есть ли способ конвертировать stringArray в массив функций?
function greet(){
return 'hi!';
}
function name(){
return 'name';
}
function greetingToName (greet, name) {
console.log( greet() + ' ' + name() );
}
var stringArray = ['greet','name'];
greetingToName.apply(null, stringArray); // this is not working properly , because it passes 'greet' and 'name' as string into function, instead of function pointers.
3 ответа
После того, как я прочел здесь все решения, у меня появилось огромное вдохновение, поэтому я придумал это решение, не меняя контекст функции, как вы думаете, ребята?
var posiableFuncs = {
greet : function(){
return 'hi! ';
},
name : function(){
return 'Mr. Awesome!';
}
}
function greetingToName (greet, name) {
console.log( greet() + ' ' + name() );
}
var stringArray = ['greet','name'];
// copy the functions and assign into arrayOfFunctions variable based on stringArray
var arrayOfFunctions = stringArray.map(function(functionName){
return posiableFuncs[functionName];
});
greetingToName.apply(window, arrayOfFunctions);
Вы можете создать Object
с этими двумя функциями и передать строки так, как вам нужно, а затем заглянуть внутрь объекта по имени.
const posiableFuncs = {
greet: () => {
return 'hi!';
},
name: () => {
return 'name';
}
};
function greetingToName(greet, name) {
console.log(posiableFuncs[greet]() + ' ' + posiableFuncs[name]());
}
const stringArray = ['greet', 'name'];
greetingToName.apply(null, stringArray);
Создание переменных функции и назначение их в массиве сделают свое дело.
Что-то, как показано ниже.
var g = function(){
return 'hi!';
}
var n = function(){
return 'name';
}
function greetingToName (greet, name) {
console.log( greet() + ' ' + name() );
}
var stringArray = [g,n];
Скрипка https://jsfiddle.net/dk_dragonknight/yhL188se/
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.