javascript - 检查是否支持 Javascript 删除功能

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

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

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

var wasDeleted = delete o.x;

现在 o.x 应该是 undefined 并且 wasDeletedtrue

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

window.x = 1;

delete window.x;

现在在 Chrome 和 IE9-10 中 x 将是 undefined,但在 IE6-8 中这会引发异常:

"Object doesn't support this action"

太棒了。请注意,这并不是说 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 block ,但是...

有什么方法可以检查浏览器是否支持 delete before 调用特定对象?

即我能判断一个属性是被浏览器认为是 host 还是 native 吗?

最佳答案

delete 是一个基本的 javascript 语言特性,IE6-8 也支持它。只是这些旧版浏览器在删除 imutablenative/host 对象属性时处理方式不同。恐怕 try-catch 语句是您解决此问题的唯一选择。

关于javascript - 检查是否支持 Javascript 删除功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17189113/

相关文章:

javascript - 仅对表格内容进行 javascript html 排序

javascript - HTML5 文件 API : Security Error while reading a file

firefox - "width: -moz-fit-content;"是否有跨浏览器的 css 值?

google-chrome - 启动文件 ://from Firefox or Chrome

javascript - 尽管存在 <img> 标签,但图像未显示且没有错误

javascript - 我应该如何实现一个函数来查找数组的非真实元素的索引?

javascript - 在 Chrome 中推送和弹出卡住数组不会抛出异常

javascript - 如何使用 JQuery/Javascript 检查选择框是否为空

javascript - 导航回调 native react

javascript - 是否可以通过 JavaScript 将数组提交到 AJAX?