IT技术博客大学习 共学习 共进步

标签:TC39

共 1 篇相关文章

IT 累计浏览 3

Soon We Can Finally Banish JavaScript to the ShadowRealm

本文深入解析了TC39正在提案的JavaScript ShadowRealm API。文章首先厘清了JavaScript的“单线程”特性,指出其更准确的表述是每个“领域”单线程执行。一个JavaScript应用可以拥有多个相互隔离的领域,每个领域拥有独立的全局对象与内置对象,但领域间的通信和资源访问受限。现有领域机制虽能提供一定隔离,但不足以满足将不可信或需隔离的代码(如第三方库、测试代码)安全沙箱化的需求。 ShadowRealm正是为解决此问题而提出的新概念。它创建了一种特殊领域,该领域拥有自己干净的全局环境与内置对象,但代码仍共享宿主领域的主线程执行,从而避免了多线程通信的复杂性。这使得开发者可以轻松创建一个与主应用环境完全隔离的“洁净室”,在其中执行代码而不用担心污染全局作用域或相互干扰。尽管ShadowRealm提供了强大的隔离能力,但文章也明确指出它主要是一个完整性边界,而非绝对安全边界。其API设计(通过`evaluate`方法执行代码)与`eval`有相似之处,核心价值在于提供了一种轻量级、无新线程开销的代码隔离方案,特别适用于构建可靠的测试环境或封装不受信任的代码。