在 Javascript 中,您可以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-10x
中将是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
检查浏览器是否支持特定对象?
即我可以告诉浏览器是否将属性视为主机或本机?