在 Javascript 中,您可以删除
一个对象属性:
var o = { x: 1, y: 2 };
var wasDeleted = delete o.x;
现在 o.x
应该是 undefined
并且 wasDeleted
是 true
。
但是你只能删除本地对象,不幸的是浏览器似乎对此有不同的想法:
window.x = 1;
delete window.x;
现在在 Chrome 和 IE9-10 中 x
将是 undefined
,但在 IE6-8 中这会引发异常:
"Object doesn't support this action"
太棒了。请注意,这并不是说 delete
不受支持...
// Oops, no var, so this is now a global, should've 'use strict'
o = { x: 1, y: 2 };
// Works
delete o.x;
// Works
delete window.o.y;
// Fails, but only in IE6-8 :-(
delete window.o
我意识到我可以添加一个 try {...} catch
block ,但是...
有什么方法可以检查浏览器是否支持 delete
before 调用特定对象?
即我能判断一个属性是被浏览器认为是 host 还是 native 吗?
最佳答案
delete
是一个基本的 javascript 语言特性,IE6-8 也支持它。只是这些旧版浏览器在删除 imutable 或 native/host 对象属性时处理方式不同。恐怕 try-catch
语句是您解决此问题的唯一选择。
关于javascript - 检查是否支持 Javascript 删除功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17189113/