From f0db75f6232b861b850f02fd986b3f168841ec45 Mon Sep 17 00:00:00 2001 From: Ming <739803697@qq.com> Date: Mon, 22 May 2023 11:43:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=98=B2=E6=AD=A2=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E7=BC=96=E8=AF=91=E5=B7=A5=E5=85=B7=E5=AE=89=E5=85=A8=E8=AD=A6?= =?UTF-8?q?=E5=91=8A=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/utils.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/utils/utils.ts b/src/utils/utils.ts index 9d0302ba..70a68cb3 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -314,6 +314,11 @@ export const JSONStringify = (data: T) => { ) } +export const evalFn = (fn: string) => { + var Fun = Function // 一个变量指向Function,防止前端编译工具报错 + return new Fun('return ' + fn)() +} + /** * * JSON反序列化,支持函数和 undefined * @param data @@ -329,12 +334,12 @@ export const JSONParse = (data: string) => { } // 还原函数值 if (typeof v === 'string' && v.indexOf && (v.indexOf('function') > -1 || v.indexOf('=>') > -1)) { - return eval(`(function(){return ${v}})()`) + return evalFn(`(function(){return ${v}})()`) } else if (typeof v === 'string' && v.indexOf && v.indexOf('return ') > -1) { const baseLeftIndex = v.indexOf('(') if (baseLeftIndex > -1) { const newFn = `function ${v.substring(baseLeftIndex)}` - return eval(`(function(){return ${newFn}})()`) + return evalFn(`(function(){return ${newFn}})()`) } } return v