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