实用模块模式接受this
作为全局:
(function( global )
var Module = ...
...
...
global.Module = Module;
})( this );
这个决定背后的理性是什么?
实用构造函数也是如此。
您引用的代码在技术上等效于:
(function()
var Module = ...
...
...
this.Module = Module;
})();
如果在构造函数或方法之外按预期使用,则this
将引用全局对象(如window
)。通过使用名称global
而不是this
来引用它,代码可以更明确地表明这就是正在发生的事情。(您必须承认,"global
"比"this
"更清楚地表示全局对象!)
不知怎么的,我没有理解你的意思。这是指当前作用域/当前对象。如果你把它放在你的"全局"范围这个将是窗口元素(或任何全局对象)。
<script type="text/javascript">
var tmp = {
someVar: null,
init: function( someVar ){
this.someVar = someVar;
}
};
tmp.init( this );
window.console.log( tmp.someVar === window ); // true
</script>
现在tmp.someVar和窗口是同一对象