检查是否支持Javascript删除功能

时间:2013-06-19 10:40:17

标签: javascript cross-browser ecmascript-5 browser-feature-detection

在Javascript中,您可以delete一个对象属性:

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

var wasDeleted = delete o.x;

现在o.x应为undefinedwasDeletedtrue

但是你只能删除原生对象,不幸的是浏览器似乎对此有不同的想法:

window.x = 1;

delete window.x;

现在Chrome和IE9-10 xundefined,但在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特定对象

即。我可以通过浏览器判断某个属性是否被视为主机原生吗?

1 个答案:

答案 0 :(得分:3)

delete是一种基本的JavaScript语言功能,IE6-8也支持该功能。只是这些旧版浏览器在删除 imutable native / host 对象属性方面的处理方式不同。我担心try-catch声明是您唯一的选择。