为了账号安全,请及时绑定邮箱和手机立即绑定

JS Object的delete方法用多了有什么影响?

JS Object的delete方法用多了有什么影响?

拉丁的传说 2019-02-26 19:07:56
最近用的delete方法比较多,总感觉奇奇怪怪的.除了影响原数组以为,delete还有什么坏处吗?let a = true;let obj = {   name: 'xiaobi',   age: 22}if(a === true) { delete obj.age }console.log(obj);// {name: 'xiaobi'}
查看完整描述

3 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

尽量不要用delete关键字。用 Reflect.deleteProperty(object, key),看考官方用法

查看完整回答
反对 回复 2019-02-26
?
手掌心

TA贡献1942条经验 获得超3个赞

delete 不会真正释放内存,只是中断了引用

查看完整回答
反对 回复 2019-02-26
?
慕森卡

TA贡献1806条经验 获得超8个赞

  • 如果你试图删除的属性不存在,那么delete将不会起任何作用,但仍会返回true

  • 如果对象的原型链上有一个与待删除属性同名的属性,那么删除属性之后,对象会使用原型链上的那个属性(也就是说,delete操作只会在自身的属性上起作用)

  • 任何使用 var 声明的属性不能从全局作用域或函数的作用域中删除。
    这样的话,delete操作不能删除任何在全局作用域中的函数(无论这个函数是来自于函数声明或函数表达式)
    除了在全局作用域中的函数不能被删除,在对象(object)中的函数是能够用delete操作删除的。

  • 任何用let或const声明的属性不能够从它被声明的作用域中删除。

  • 不可设置的(Non-configurable)属性不能被移除。这意味着像Math, Array, Object内置对象的属性以及使用Object.defineProperty()方法设置为不可设置的属性不能被删除。

delete操作符有哪些问题看这篇文章


查看完整回答
反对 回复 2019-02-26
  • 3 回答
  • 0 关注
  • 2131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信