在javascript中,window和this.window有什么区别
What is the difference between window and this.window, in javascript?
我正在研究一个复杂的JavaScript,它正在对对象和脚本进行各种运行时/动态操作。在这个过程中,我正在学习关于Javascript及其特质的各种细节。
不过,这个让我难倒了。有没有出现过这样的情况
window !== this.window; //true
换句话说,你什么时候会写这个.window而不是直接出窗?
"有没有
window !== this.window; //true
的情况?"
当然,每当this
引用没有.window
属性或具有不指向全局对象的.window
属性的对象时(假设浏览器环境window
是全局对象)。
"...你什么时候会写
this.window
而不是直接写window
?
当this
引用一个对象时,其中.window
属性预计不是对全局的引用。
this
不像在 C++ 和 Java 中那样在 JavaScript 中隐式搜索名称。
在 JavaScript 中,引用foo
的东西而不是 this.foo
或 someobject.foo
,按顺序尝试任何var
声明的变量,然后是全局命名空间。
this.var
仅查找this
的成员(及其原型,以及原型的原型等)
在脚本的顶层,this
引用默认的全局命名空间,即 window
对象,在调用带有 foo.meth()
的方法之前,这是您停留的地方。 奇怪的是,window
包含一个名为window
的成员,它指向自己。 所以你一般可以去:
window.window.window.window.location = "some_url"
如果你愿意。 事实上,你假设的很多名字"就在那里"是全局对象的成员,例如
Object === window.Object
如果你喜欢你可以说
var window;
声明一个名为 window
的变量,该变量在该代码块中隐藏全局窗口。 但不要那样做。
我相信您实际上也可以更改全局命名空间是什么,但我不记得如何更改。
嗯,这是一个重复的,但是当你在全局范围(err)中时,this
指的是全局范围,并且全局范围是window
。(所以this == window
和window.window == window
都是真的)
如果您所在的函数用作构造函数,例如 ( new Pie()
),this
不再引用全局范围,而是引用创建的对象。this
实际上取决于您在何处运行代码。
- 未捕获的类型错误:topFrame.window.changeSelectedBarStyle不是函数,原因是什么
- 注入$window在angular,有什么用
- window.innerWidth window.outerWidth有什么区别
- 如果 window.navigator.userAgent 被弃用,我应该改用什么
- 做window.undefined=window.undefined有什么意义
- 什么是“-[1;平均值;if(!-[1,]&&!window.XMLHttpRequest)"
- window.setTimeout()和setTimeout()有什么区别
- 这些window.external调用是什么意思
- 什么时候是 window.location.href = url 被执行
- 在浏览器返回时使window.history.state null的可能情况是什么
- “window.functionname&&functionname()”是做什么的
- 如果我覆盖 window.scrollTo 方法会发生什么
- JavaScript中“(function(window, undefined){})(window)”是什么意思?
- “window.location.href”和“window.location.hash”有什么区别
- Javascript window.open 什么都不做,不产生错误
- 使用 jquery $(window).width() 有什么好处吗?和高度函数在窗口上.resizeTo( w,h )
- javascript window.stop() 的反面是什么
- 是什么意思?
- 在javascript中,window和this.window有什么区别
- Firefox中的open()和window.open()有什么区别