gas*_*r_k 65 javascript internet-explorer properties window
我找不到关于这个问题的任何信息; 为什么以下代码不能在IE中运行?
window.x = 45;
delete window.x;
// or delete window['x'];
Run Code Online (Sandbox Code Playgroud)
IE报告"对象不支持此操作"错误.它是否与IE问题中迭代窗口属性有关?
Fra*_*man 49
加斯珀对他所完成的解决方案发表了评论,但我认为值得称之为实际答案:
try
{
delete window.x;
}
catch(e)
{
window["x"] = undefined;
}
Run Code Online (Sandbox Code Playgroud)
有趣的问题,我今晚只是猛烈地反对它.IE上引发了异常但不是Firefox.我怀疑这种解决方法会泄漏内存,因此请谨慎使用.
有人问,为什么不分配undefined?如果你想稍后枚举密钥很重要(尽管如果你依赖于解决方法,关键枚举仍然不会做你想要的......).但无论如何,要强调删除和简单分配undefined(http://jsfiddle.net/fschwiet/T4akL/)之间的区别:
var deleted = {
a: 1
};
var cleared = {
a: 1
};
delete deleted["a"];
cleared["a"] = undefined;
for(var key in deleted) {
console.log("deleted has key", key);
}
for(var key in cleared) {
console.log("cleared has key", key);
}
console.log("deleted has a?", deleted.hasOwnProperty('a'));
console.log("cleared has a?", cleared.hasOwnProperty('a'));
Run Code Online (Sandbox Code Playgroud)
产生输出:
cleared has key a
deleted has a? false
cleared has a? true
Run Code Online (Sandbox Code Playgroud)
小智 36
我会这样做:
window[x] = undefined;
try{
delete window[x];
}catch(e){}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18126 次 |
最近记录: |