沙箱JavaScript使用with关键字
Sandboxing JavaScript using with keyword
我偶然发现了Dustin关于使用with
关键字来沙箱一些模块的文章:
实际的代码片段是:
(function () {
with (this) {
{{ender}}
{{library}}
}
}).call({})
谁能更好地解释一下他在做什么?我不太能理解这里使用with(this)
的好处,以及{{ender}}
和{{library}}
的含义。他将这种方法与使用iframe进行了比较(我理解),但我不太明白他在这里想要做什么。 他导致在该函数中声明的所有变量(和函数)都在this
的上下文中,即包装函数的上下文中。
通常,如果你在函数中使用var
创建变量,它是该函数的局部变量,这很好。但如果你不这样做呢?在这种情况下,通过使用with
,所有本来是全局的变量都在with的上下文中(在这种情况下,上下文是函数的this
)
相关文章:
- Fighting with FRP
- 使用“;这个“;JavaScript原型方法中的关键字
- issue with FB.Event.subscribe
- delete关键字在全局变量上的不同行为
- geolocation-marker.js conflict with markerclusterer.js
- Angular 2.0 with JavaScript or TypeScript?
- 为什么不推荐使用“with”?是否有更好或其他方法可以“下降”到对象的命名空间
- WebComponentsJS with IE10
- JavaScript 中的嵌套函数和 “this” 关键字
- 指令的模板必须只有一个根元素:With restrict E&替换true
- timeago.js with datatable and PHP
- Ajax and Json with Rails
- 如何在不使用 new 关键字的情况下从函数创建对象
- errors with Javascript try catch
- Angularjs使用“;这个“;promise内的关键字回调
- how to split a string with ','
- JavaScript 理解递归调用代码清理中的上下文,没有“with”关键字
- 此代码中发生了什么,如果没有“with”关键字,以下内容的基本实现是什么
- 沙箱JavaScript使用with关键字
- 在内存使用和效率方面,变量和WITH关键字哪个更好