惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
宝玉的分享
宝玉的分享
月光博客
月光博客
小众软件
小众软件
Jina AI
Jina AI
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
Tailwind CSS Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 【当耐特】
博客园 - 三生石上(FineUI控件)
博客园 - 司徒正美
大猫的无限游戏
大猫的无限游戏
The Cloudflare Blog
G
Google Developers Blog
M
MIT News - Artificial intelligence
N
Netflix TechBlog - Medium
云风的 BLOG
云风的 BLOG
MyScale Blog
MyScale Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
爱范儿
爱范儿
U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Blog — PlanetScale
Blog — PlanetScale

博客园 - androllen

Python yield 关键词 PDF 构成 桌面客户端的主要类型和技术方案 Python 压缩转义 异步删除嵌套文件夹及文件 数据结构 二叉树遍历 数据结构 线性表 VSCode 配置内部Python项目 缺少模块ModuleNotFoundError C# 基础知识 算法-数列 算法-排序算法 C# 设计模式-简单工厂模式 C# 设计模式 C# Utils .Net 异步与同步 WPF StreamGeometry Vue 打开窗口输出文件路径 CSS Flexbox layout 2 CSS Flexbox layout 1
JS 字符串转换为函数体
androllen · 2025-03-20 · via 博客园 - androllen

//使用示例
drawer.draw({ type: 'circle', param: 'red' }); // 调用_drawCircle
drawer.draw({ type: 'rect', param: 'blue' }); // 调用_drawRect

function test() {
  debugger;
  console.log("test");
}

function looseJsonParse(obj) {
  return Function('"use strict";return (' + obj + ")")();
}
const parsedFunction = looseJsonParse("function test(){console.log('1');}");
console.log(parsedFunction);

// { a: 3, b: [Function: b], c: 2021-06-28T08:00:00.000Z }
// 通过Function构造函数,将字符串转换为函数体,再通过()执行函数体,返回函数体的结果,即可实现将字符串转换为对象的功能。
// 但是,由于使用了Function构造函数,因此需要注意安全性问题,不要将不可信的字符串传入该函数。

// 通过JSON.parse()方法,可以将JSON字符串转换为对象,但是JSON.parse()方法只能解析符合JSON规范的字符串,对于一些不符合JSON规范的字符串,如字符串中包含函数、日期等,JSON.parse()方法会抛出异常。
// 为了解决这个问题,可以使用eval()方法,但是eval()方法会执行字符串中的代码,存在安全隐患。
// 因此,可以使用Function构造函数,将字符串转换为函数体,再通过()执行函数体,返回函数体的结果,即可实现将字符串转换为对象的功能。但是,由于使用了Function构造函数,因此需要注意安全性问题,不要将不可信的字符串传入该函数。