如何将字符串数组转换为库系统的函数指针集合
How to convert stringArray to function pointer collection for librarySystem
目前我正在写一个库系统
并且在下面的代码示例中有一个 stringArray ['greet','name'] 作为依赖项,但是我需要使用这个 stringArray 作为传入函数的数组
greetingToName() 通过使用 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.
您可以使用这 2 个函数创建一个 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];
在这里看了大家的解决方案后,我得到了很大的启发,所以我在不改变函数上下文的情况下想出了这个解决方案,你们觉得怎么样?
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);
目前我正在写一个库系统
并且在下面的代码示例中有一个 stringArray ['greet','name'] 作为依赖项,但是我需要使用这个 stringArray 作为传入函数的数组 greetingToName() 通过使用 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.
您可以使用这 2 个函数创建一个 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];
在这里看了大家的解决方案后,我得到了很大的启发,所以我在不改变函数上下文的情况下想出了这个解决方案,你们觉得怎么样?
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);