为什么窗口或文档不能设置为undefined或null?

时间:2015-05-12 16:09:48

标签: javascript browser

这可能是一个愚蠢的问题,但我还没有找到答案。为什么我们不能做以下事情?

window = undefined

OR

document = undefined

我知道这些是全局变量并且可以在浏览器中使用但是考虑JavaScript是如何工作的,这是不可能的?每次我们尝试访问它们时都会重新评估它们吗?

我也很想知道windowdocument对象在将它们设置为随机值后仍然保持原样...可能是number或{{1 }或undefined

2 个答案:

答案 0 :(得分:4)

根据the standard

  

window属性必须返回[0, 1, 0]对象的浏览上下文Window对象。   document属性必须返回WindowProxy对象的最新Window对象。

含义Document是评估所有脚本的上下文。如果它是可写的,那么上面的内容就不会被执行,并且实现不会遵循规范,因此它不可写。
出于类似的原因,您可以向window添加属性,但不能覆盖它。

您可以通过查看IDL来验证这一点:

document

答案 1 :(得分:0)

window是上下文。你不能this = something做其他事。 document是窗口的属性。它不可写或可配置。

Object.getOwnPropertyDescriptor( window, 'document' );

输出

Object {value: document, 
   writable: false,
   enumerable: true, 
   configurable: false}