js利用原子化,根据json维护动态调用函数,不同函数传值个数不同,返回值类型也都不同
时间: 2023-05-24 16:03:38 浏览: 70
A:可以使用以下方式实现动态调用函数:
1. 定义一个 JSON 对象,将函数名作为属性名,函数体作为属性值。
2. 利用 eval() 方法将函数字符串转化为可执行的 JavaScript 代码。
3. 通过 eval() 方法执行对应的函数代码,并将参数传入。
4. 根据不同的函数返回值类型,进行相应的类型转换。
下面是一个示例代码:
```js
// 定义 JSON 对象来维护动态调用函数
var funcs = {
add: 'function (a, b) { return a + b }',
minus: 'function (a, b) { return a - b }'
};
// 定义动态调用函数的函数
function dynamicCall(funcName, params) {
var funcString = funcs[funcName];
if (!funcString) {
console.log('Function not found.');
return;
}
var func = eval('(' + funcString + ')');
var result = func.apply(null, params);
// 根据不同的函数返回值类型,进行相应的类型转换
if (funcName === 'add') {
return Number(result);
} else if (funcName === 'minus') {
return String(result);
}
}
// 调用函数示例
console.log(dynamicCall('add', [1, 2])); // 3
console.log(dynamicCall('minus', [2, 1])); // "1"
```
注意:为了避免安全漏洞,应当避免使用 eval() 方法来执行用户输入的字符串。