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