还原序列化后函数

15 阅读1分钟

'''

function deserializeFunction(serializedFunction) { // 提取参数部分的字符串 const paramMatch = serializedFunction.match(/((.*?))/); let paramStr = ""; if (paramMatch && paramMatch.length > 1) { paramStr = paramMatch[1].trim(); } const paramNames = paramStr.split(',').map(p => p.trim()).filter(p => p);

// 提取函数体部分的字符串
const bodyMatch = serializedFunction.match(/\{([\s\S]*?)\}/);
let functionBody = "";
if (bodyMatch && bodyMatch.length > 1) {
    functionBody = bodyMatch[1].trim();
}

// 使用 new Function 创建新函数
const newFunction = new Function(...paramNames, `return { ${functionBody} }`);

return function (...args) {
    const result = newFunction(...args);
    return result;
};

}

// 测试示例 const serializedFunction = function (a, b) { return a + b; }; const restoredFunction = deserializeFunction(serializedFunction); const result = restoredFunction(3, 5); console.log(result); '''