删除对象的某个属性 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

Object.defineProperty()可参考: http://imweb.io/topic/56d40adc0848801a4ba198ce

posted @ 2018-08-30 15:05  doublealoe  阅读(11490)  评论(0编辑  收藏  举报