在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-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
特定对象?
即。我可以通过浏览器判断某个属性是否被视为主机或原生吗?
答案 0 :(得分:3)
delete
是一种基本的JavaScript语言功能,IE6-8也支持该功能。只是这些旧版浏览器在删除 imutable 或 native / host 对象属性方面的处理方式不同。我担心try-catch
声明是您唯一的选择。