遇到以下代码行,但无法理解。
这是什么 (/ ... /)(this); javascript中的用途?这个模式有名字吗?
代码如下:
//Move.js
(function(exports){
exports.Move = function(){
};
})(this);
遇到以下代码行,但无法理解。
这是什么 (/ ... /)(this); javascript中的用途?这个模式有名字吗?
代码如下:
//Move.js
(function(exports){
exports.Move = function(){
};
})(this);
此模式是“立即调用函数表达式”。简而言之,它只是一个立即执行的函数。最后this
是一个要发送到内部函数的参数,该函数将被访问为exports
(function(exports){
//that was "this" outside, is now "exports" in here
}(this));
在您的示例中,我们可以假设无论this
是什么,它都是一些已添加Move
方法的对象。
有些人还将这种模式称为“模块模式”,因为它创建了一个“包含的环境”,因此由于新的功能范围,其中的东西对它不可见。换句话说,里面的东西都能看到外面,但外面只能看到里面让它看到的东西
该模式只是在执行时exports
分配给。this
假设全局作用域和浏览器一样,this
都会指向该window
对象。
考虑到这些假设,window.Move
应该包含在该 IIFE(立即调用函数表达式)内部分配的函数。
如果在this
is not window
的不同上下文中调用此函数,它将将该方法分配给this
外部环境中的任何内容。
这种模式称为“模块模式”。有各种子模式,这个使用了增强模块模式。
首先,我们导入模块,然后添加属性,然后导出它。这是一个示例,从上面扩充我们的 MODULE:
有关此模块模式的更多信息,请查看http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth
有关一般 Javascript 模式的更多信息,请查看 http://addyosmani.com/resources/essentialjsdesignpatterns/book/