我只是阅读有关全局对象的内容,并想知道是否可以更改全局对象属性的值。我不知道这会起什么作用,但我很感兴趣。
以此代码为例:
Infinity = 4; //Alter the property Infinity of the global object
//This doesn't prompt an error...
console.log(Infinity); //Yet, for some reason it still prints Infinity, instead of 4.
你能否这样做:
delete Infinity;
console.log(Infinity)
似乎这是不可能的,因为Infinity仍会打印Infinity,而不是提示未定义的错误。
答案 0 :(得分:2)
这取决于 - 属性是否可写/可配置?
Infinity
既不是以下控制台日志所公开的:
> Object.getOwnPropertyDescriptor(window,'Infinity')
< Object {value: Infinity, writable: false, enumerable: false, configurable: false}
但是,其他全局属性(例如frames
)是可配置的:
> Object.getOwnPropertyDescriptor(window,'frames')
< Object {value: Window, writable: true, enumerable: true, configurable: true}
所以,基本上,这取决于财产的设置方式。
答案 1 :(得分:0)
好问题,但答案是肯定的。无法修改或删除全局对象。全局对象是JavaScript所必需和内置的。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects