6

在 Javascript 中,您可以delete使用对象属性:

var o = { x: 1, y: 2 };

var wasDeleted = delete o.x;

现在o.x应该是undefinedwasDeletedtrue

但是,您只能删除本机对象,不幸的是,浏览器对此似乎有不同的想法:

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检查浏览器是否支持特定对象?

即我可以告诉浏览器是否将属性视为主机本机

4

1 回答 1

3

delete是 IE6-8 也支持的基本 javascript 语言功能。只是这些旧版浏览器在删除不可变本机/宿主对象属性方面的处理方式不同。恐怕try-catch声明是您解决此问题的唯一选择。

于 2013-06-19T10:43:21.733 回答