js中window对象前缀是不是都可以省略?比如window.history.length 直接写history.length好像也可以 还有open 是不是所有的window对象(如screen、location)及其方法、属性都可以省略window前缀?还是说有什么限制?
5 回答
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
说下我的理解吧,可能不精准,仅供参考。
Window 对象表示浏览器中打开的窗口,那么满足两个条件,就可以省略:
在浏览器环境下
在顶级Frame下
那么在以上两个条件的前提下,以下情况是无法省略window的:
在子Frame框架下,因为浏览器会为
frame新创建一个子window对象非浏览器环境下,比如Node
呼如林
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下获取.
以上都是个人理解,可能会有偏差,还请指出
添加回答
举报
0/150
提交
取消

