使用带有关键字的沙盒JavaScript

时间:2011-10-28 05:36:23

标签: javascript with-statement sandbox

我偶然发现Dustin使用with关键字对这些模块进行沙盒处理:

http://dustindiaz.com/sandboxing-javascript

实际的代码段是:

(function () {

  with (this) {
    {{ender}}
    {{library}}
  }

}).call({})

有人可以用更好的方式解释他在做什么吗?我无法在此处使用with(this),以及{{ender}}{{library}}的含义。他将这种方法与使用iframe(我理解)进行了比较,但我无法完全了解他在这里尝试做什么。

1 个答案:

答案 0 :(得分:1)

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

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