Advantage of (function() {/*...*/}).call(this);
Advantage of (function() {/*...*/}).call(this);
在查看uuid的代码时.js我注意到整个API定义的这种模式。
(function() {/*...*/}).call(this);
这种模式在javascript中有什么优点?
它只是一个立即调用的函数表达式,具有定义的上下文(this
)。 普通的 IIFE 将全局对象作为其上下文。
读取您链接到的源文件,在此上下文中(没有双关语),他们使用 this
来获取对全局对象的显式引用,而不假设它被命名为 window
(对于浏览器)或global
(对于 node.js 等)。
(IIFE 是一种常见的构造,用于创建一个新作用域,在该作用域中可以声明变量,而不会污染全局名称空间,并立即执行块中的代码)。
这样做的主要优点是,您可以在函数中声明任意数量的变量,并且它们不会污染全局范围。
另请参阅:模块模式。
相关文章:
- this.someFunction.call(this,param);的用途是什么;
- 定义CommonJS模块时,fn.call(this)与fn()的对比
- 用(function(){…}).call(this)包装文件,而用简单的()包装调用
- Advantage of (function() {/*...*/}).call(this);
- [].slice.call(this) vs array.prototype.call(this)
- 为什么使用 (function(){}).call(this);.
- 下划线模板错误:函数(n){return a.call(this,n,h)}
- this.a() vs a.call(this) in javascript
- Node.js:事件的关系.EventEmitter.call(this)和Obj.prototype.__proto_
- 为什么调用array.prototype. foreach .call()时将数组设置为THIS对象不能工作?
- 在创建自定义EventEmitter时是否需要events.EventEmitter.call(this)
- 为什么要写“call(this)”?在javascript匿名函数的末尾
- Function.prototype.call在严格模式之外改变this的类型;为什么
- 在扩展THREE.js的“类”时,为什么需要从新对象中调用.call(this)方法?
- 我如何使这个窗口时.call(this)从commonJS模块
- 在coffescript中使用.call(this)
- 为什么object.function.this在使用function.call时没有定义
- 'this'在Array.prototype.slice.call(arguments)中设置上下文
- JavaScript inheritance with .call(this)
- 使用.call(this)继承原型