evalFunctions.js 807 B

1234567891011121314151617181920212223242526272829
  1. function stringifyObjectFunctions (obj) {
  2. // 遍历对象属性
  3. for (const key in obj) {
  4. const value = obj[key]
  5. // 如果属性值是函数类型,将函数转换为字符串
  6. if (typeof value === 'function') {
  7. obj[key] = `(${value.toString()})`
  8. // 如果属性值是对象类型,则递归进行转换
  9. } else if (typeof value === 'object' && value !== null) {
  10. stringifyObjectFunctions(value)
  11. }
  12. }
  13. return JSON.stringify(obj)
  14. }
  15. function stringToFunction (str) {
  16. return JSON.parse(str, (key, value) => {
  17. if (typeof value === 'string' && (value.includes('=>') || value.includes('function'))) {
  18. // eslint-disable-next-line no-eval
  19. return eval(`(${value})`)
  20. }
  21. return value
  22. })
  23. }
  24. export {
  25. stringifyObjectFunctions,
  26. stringToFunction
  27. }