在尝试删除全局(窗口)对象时,我遇到了以下行为,我想知道是否有人可以解释设置propertydescriptors背后的基本原理。
我不明白这有多大意义。 感谢。
Firefox 52.0.1(32位)Windows 7。
答案 0 :(得分:2)
当你写:
window.dog = 1;
您 明确 在名为window
的全局dog
对象上创建新属性。因此,在创建它时,会将configurable
开关设置为true
来创建它。然后你宣布
var dog = 6;
不会改变已明确创建属性的事实。
宣布:
var cat = 9;
您 隐式 在全局cat
对象上创建名为window
的属性。通过这种方式创建,该属性将configurable
开关设置为false
。
关键是全局属性通常是一件坏事,并且在极少数情况下你可能想要一个,最好明确它,为了可读性,而且(你已经发现)最多与他们合作的灵活性。