删除对象的某个属性 delete
有时候我们可能会遇到需要删除一个对象的某个属性的这种情况,保留剩下的,不想遍历,那我们就可以使用delete操作符,
let obj = { a: 1, b: 2, c: 3 } delete obj.a // 返回值: 对于所有情况都是true
,除非属性是一个自身的
不可配置
的属性,在这种情况下,非严格模式返回false
。 console.log(obj) // {b: 2, c: 3}
但是如果你试图删除的属性不存在,那么delete将不会起任何作用,但仍会返回true;因此正确判断返回,可以使用Reflect函数处理
if (Reflect.has(obj, 'a')) {
Reflect.deleteProperty(obj, 'a');
}
注意:
- 像Math, String这样的内置对象的属性 (不可设置的属性)不可删除
- 使用
Object.defineProperty()
方法设置为不可设置的属性不能被删除。
delete更多可参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/delete
http://imweb.io/topic/56d40adc0848801a4ba198ceObject.defineProperty()
可参考:
Every day deserves to be expected