沙箱JavaScript使用with关键字

Sandboxing JavaScript using with keyword

本文关键字:关键字 with 使用 JavaScript 沙箱      更新时间:2023-09-26

我偶然发现了Dustin关于使用with关键字来沙箱一些模块的文章:

http://dustindiaz.com/sandboxing-javascript

实际的代码片段是:

(function () {
  with (this) {
    {{ender}}
    {{library}}
  }
}).call({})
谁能更好地解释一下他在做什么?我不太能理解这里使用with(this)的好处,以及{{ender}}{{library}}的含义。他将这种方法与使用iframe进行了比较(我理解),但我不太明白他在这里想要做什么。

他导致在该函数中声明的所有变量(和函数)都在this的上下文中,即包装函数的上下文中。

通常,如果你在函数中使用var创建变量,它是该函数的局部变量,这很好。但如果你不这样做呢?在这种情况下,通过使用with,所有本来是全局的变量都在with的上下文中(在这种情况下,上下文是函数的this)