在 Javascript 中,您可以使用
现在,
但是,您只能删除本机对象,不幸的是,浏览器似乎对此有不同的想法:
现在在Chrome和IE9-10中
delete
删除对象属性: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中会抛出异常:
很好。请注意,这并不意味着不支持"对象不支持此操作"
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
块,但是...
是否有办法在调用特定对象的delete
之前检查浏览器是否支持它?
也就是说,我能否确定属性被浏览器视为host或native?
window.o.x
被认为是本地属性,而window.o
被认为是主机属性。我想做的是检测(无需使用try-catch
)浏览器认为它是哪一个。 - Keith