Javascript 生活和窗口对象?
Javascript 生活和窗口对象?,javascript,jquery,Javascript,Jquery,iLife需要访问非重写的窗口对象-可以看作: 例如: 但有时我也会看到这个(): 问题1:有什么区别吗?如果是,我应该在什么时候使用它们 问题2:这个内部iLife是窗口。为什么需要“发送”窗口/调用(此)?(jQuery没有使用严格模式imho) 铌 看起来jQuery(自1.11.0以来)也采用了这种模式: (function (global, factory) { //.... }(typeof window !== "undefined" ? window : this, fu
iLife
需要访问非重写的窗口
对象-可以看作:
例如:
但有时我也会看到这个():
问题1:有什么区别吗?如果是,我应该在什么时候使用它们
问题2:这个内部iLife
是窗口
。为什么需要“发送”窗口
/调用(此)
?(jQuery没有使用严格模式imho)
铌
看起来jQuery(自1.11.0以来)也采用了这种模式:
(function (global, factory)
{
//....
}(typeof window !== "undefined" ? window : this, function (window, noGlobal)
{
//...
});
下划线是一个javascript库而不是DOM库,因此它不应该在任何地方使用window,因为javascript不是DOM,window是一个DOM api
使用这种方法,下划线不会绑定到DOM。试图在nodejs或rhino中调用window是行不通的,也没有任何意义
编辑:
调用将函数的上下文设置为此(全局或窗口),因此无需将任何内容作为参数传递。那么,为什么它仍然使用此
?因为这是指向作用域的有效javascript。如果在控制台中键入此项,它将返回窗口。我问的是这2:-)之间的区别。例如,为什么下划线没有这样做:(函数(根){//…})(this)代码>而不是?(为了设置上下文)$是jquery的快捷方式,为什么要使用它?我知道调用设置上下文也适用。但是在iLife中-这个
已经引用了全局对象。另外-选择应用/调用与发送<代码>此代码>是否有任何原因?(这实际上是我的两个简单问题)在某些JS环境中可能没有窗口
变量……而@Bergi则可以这样做:$(函数(全局){//doeswithglobal})(这)代码>…否?@Bergi你能帮我找到IIFE中的上下文是全局对象吗?(我找不到它)不一定在IIFE内部(通过普通调用逻辑),但(作为参数传递给.call()
的)始终是全局对象。@Bergi你是说当我执行f()
时,它实际上运行f.call
?
(function() {
var global= this;
// do something with global
}).call(this);
(function (global, factory)
{
//....
}(typeof window !== "undefined" ? window : this, function (window, noGlobal)
{
//...
});
(function() {
var win = this;
// do something with win
}).call(this);