用 js 写一个 js 解释器过程详解(2)

if(node.type === 'CallExpression') { // 函数 const callee = 调用 Identifier 处理器 // 参数 const args = node.arguments.map(arg => { return 调用 Literal 处理器 }); callee(...args); }

代码

这里有一份简单的实现, 可以跑通上面的流程, 但也仅仅可以跑通上面而已, 其他的特性都还没实现。

https://github.com/noahlam/practice-truth/tree/master/js2js

其他实现方式

除了上面我介绍得这种最繁琐得方式外,其实 js 还有好几种可以直接执行字符串代码得方式

1.插入 script DOM

const script = document.createElement("script"); script.innerText = 'alert("hello world!")'; document.body.appendChild(script);

2.eval

eval('alert("hello world!")')

3.new Function

new Function('alert("hello world")')();

4.setTimeout 家族

setTimeout('console.log("hello world")');

不过这些在小程序里面都被无情得封杀了...

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/43a8abeea254a6b85579fbc00ceb74a7.html