eve*_*ost 10 javascript safari dom
考虑以下代码:
(function () {
'use strict';
delete document.body.dataset.state;
})();
Run Code Online (Sandbox Code Playgroud)
身体dataset是空的.Safari浏览器将所有DOMStringMap值-嗯,我猜是这样-因为ReadOnly,他们enumerable,configurable和writable描述符值都设置为false.这导致TypeError: Unable to delete property出现在上面提到的例子中.
但是在Chrome数据集中,属性描述符值设置为true(可以检查Object.getOwnPropertyDescriptor()),删除不存在的属性不会抛出错误.
那么,什么行为是正确的?该规范说明了readonly数据集,但可写DOMStringMap,所以我假设数据集属性必须是可删除的.我错过了什么吗?
可能是因为严格模式。
第三,严格模式会尝试删除不可删除的属性(之前的尝试根本没有效果):
'use strict';
delete Object.prototype; // throws a TypeError
Run Code Online (Sandbox Code Playgroud)
您可能想看一下这个文档
您也可以尝试将对象值设置为未定义,它有点毛茸茸的,但有效。