js中window对象前缀是不是都可以省略?

js中window对象前缀是不是都可以省略?
比如window.history.length 直接写history.length好像也可以 还有open 是不是所有的window对象(如screen、location)及其方法、属性都可以省略window前缀?还是说有什么限制?

郎朗坤
浏览 1189回答 5
5回答

泛舟湖上清波郎朗

说下我的理解吧,可能不精准,仅供参考。Window 对象表示浏览器中打开的窗口,那么满足两个条件,就可以省略:在浏览器环境下在顶级Frame下那么在以上两个条件的前提下,以下情况是无法省略window的:在子Frame框架下,因为浏览器会为frame新创建一个子window对象非浏览器环境下,比如Node

慕侠2389804

所以都可以省略这个window凡是 window对象的属性和方法都可以window.alert()window.history

呼如林

作用域问题, 下面来自《你不懂js》的作用域章节function foo(a) {     console.log( a + b ); }var b = 2; foo( 2 ); // 4引擎:“嘿,foo 的 作用域,听说过 b 吗?我得到一个它的 RHS 引用。”作用域:“没有,从没听说过。问问别人吧。”引擎:“嘿,foo 外面的 作用域,哦,你是全局 作用域,好吧,酷。听说过 b 吗?我得到一个它的 RHS 引用。”作用域:“是的,当然有。给你。”可以大概得出,在函数foo的作用域中并没有b变量,所以会去外层(直到全局, 未找到则会报错)寻找,而在浏览器中也就是会去window下寻找。如果使用window.alert,则表示alert存在于window作用域下, 这样Js引擎直接就去window下获取.以上都是个人理解,可能会有偏差,还请指出
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript