1.讀取用戶的json配置庶诡,并執(zhí)行用戶json模型中的方法
const data= {
"methodString": "function(arg1, arg2) { return arg1 + ' ' + arg2; }"
}
const method = new Function('arg1', 'arg2', 'return (' + data.methodString + ')(arg1, arg2);');
method('hello','world')
new Function 構(gòu)造函數(shù):
Function 構(gòu)造函數(shù)用于創(chuàng)建一個新的函數(shù)對象。
它接受多個參數(shù)氢橙,其中第一個和第二個參數(shù)是函數(shù)的參數(shù)名(在這個例子中是 'arg1' 和 'arg2')本缠,最后一個參數(shù)是函數(shù)體的字符串表示胰柑。
參數(shù)名: 'arg1' 和 'arg2' 是傳遞給新創(chuàng)建的函數(shù)的參數(shù)名卡睦。
函數(shù)體: 字符串定義了一個立即執(zhí)行的函數(shù)表達式(IIFE):
javascript
(function(arg1, arg2) {
return arg1 + ' ' + arg2;
})(arg1, arg2);
```
IIFE 的作用是定義一個匿名函數(shù)并立即執(zhí)行它器仗,返回結(jié)果融涣。
執(zhí)行過程:
當(dāng)你調(diào)用 method(arg1, arg2) 時,arg1 和 arg2 會被傳遞給這個新創(chuàng)建的函數(shù)精钮。
函數(shù)體內(nèi)定義的 IIFE 會立即執(zhí)行暴心,并返回 arg1 + ' ' + arg2 的結(jié)果。
示例
假設(shè)你調(diào)用 method('Hello', 'World'):
arg1 和 arg2 被設(shè)置為 'Hello' 和 'World'杂拨。
IIFE 被執(zhí)行:
javascript
(function(arg1, arg2) {
return arg1 + ' ' + arg2;
})('Hello', 'World');
返回值是 'Hello World'专普。
所以,method('Hello', 'World') 的返回值是 'Hello World'弹沽。
總結(jié)
new Function('arg1', 'arg2', "...") 創(chuàng)建了一個新的函數(shù)檀夹,該函數(shù)接受兩個參數(shù) arg1 和 arg2筋粗。
函數(shù)體內(nèi)定義了一個 IIFE,該 IIFE 立即執(zhí)行并返回 arg1 + ' ' + arg2 的結(jié)果炸渡。
調(diào)用 method('Hello', 'World') 會返回 'Hello World'娜亿。