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

javascropt理解删除对象属性,防止内存泄漏

标签:
JavaScript

delete运算符可以删除对象的属性,它的操作数应当是一个属性访问表达式,
var book={
"author":"yang",
"main title":"This a boy"
};
delete book.author; //book不再有属性author
delete book["main title"] //book不再有属性main title
delete运算符只能删除 对象的自有属性,不能删除从原型上继承过来的属性,要删除继承属性,必须在这个对象的原型中删除。
让人意外的是,delete只是断开属性和宿主对象的联系,而不会去操作属性中的属性。
var obj={x:{x1:0}};
var obj2=obj.x;
delete obj.x;
console.log(obj2.x1); //返回0;
执行这段代码后obj2.x1的值依然是0;由于删除的属性引用依然存在,因此在JavaScript的某些实现中,可能因为这种不严谨的代码造成内存泄漏。所以在销毁对象的时候,要遍历属性中的属性,依次删除。
delete不能删除不可配置的属性,使用var 创建的属性是不可配置的属性,如:
var str="JavaScript";
delete this.str; // 报错或返回false
this.str2="HTML5";
delete this.str2; str2为可配置属性,可以使用delete删除

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消