【发布时间】:2010-11-07 14:06:59
【问题描述】:
我找不到有关此问题的任何信息;为什么下面的代码在 IE 中不起作用?
window.x = 45;
delete window.x;
// or delete window['x'];
IE 报告“对象不支持此操作”错误。它与IE问题中的窗口属性迭代有什么关系吗?
【问题讨论】:
-
为了清楚起见,因为看起来没有人在任何答案中实际说过:这是 Internet Explorer 中的一个 错误。 1999(第 3 版)规范中没有任何内容允许从
delete引发异常,即使该属性不存在或不可删除(您的window.x在任何情况下都不应出现),而新的第 5 版版本规范只允许在新的严格模式下从delete抛出异常。在这方面,window没有什么特别之处。然而,在 2010 年,IE8 中的 JScript 引擎仍然出现了这个错误。sigh -
T.J. Crowder,window 不是一个对象,它是根命名空间的访问器。它没有这样的属性,所以当你在它上面运行 delete 时,例如在这种情况下,它没有义务以任何理由实际删除它们。在对象名称上设置 undefined 很好,因为 gc 将通过并消除未引用的对象。希望这有助于理解这里的实际问题,以及为什么这不是一个错误,因为它对于正在缓慢更新以实现现代化的语言来说是一个糟糕的实现选择
标签: javascript internet-explorer properties window