为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

郎朗坤 2019-03-13 22:15:09
js中window对象前缀是不是都可以省略?比如window.history.length 直接写history.length好像也可以 还有open 是不是所有的window对象(如screen、location)及其方法、属性都可以省略window前缀?还是说有什么限制?
查看完整描述

5 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

说下我的理解吧,可能不精准,仅供参考。
Window 对象表示浏览器中打开的窗口,那么满足两个条件,就可以省略:

  1. 在浏览器环境下

  2. 在顶级Frame下

那么在以上两个条件的前提下,以下情况是无法省略window的:

  1. 在子Frame框架下,因为浏览器会为frame新创建一个子window对象

  2. 非浏览器环境下,比如Node


查看完整回答
反对 回复 2019-04-08
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

https://img1.sycdn.imooc.com//5caaeabe0001878807700437.jpg

所以都可以省略这个window

凡是 window对象的属性和方法都可以

window.alert()
window.history


查看完整回答
反对 回复 2019-04-08
?
呼如林

TA贡献1798条经验 获得超3个赞

作用域问题, 下面来自《你不懂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下获取.

以上都是个人理解,可能会有偏差,还请指出


查看完整回答
反对 回复 2019-04-08
  • 5 回答
  • 0 关注
  • 1188 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号