js 如何将某个属性设置成隐藏的

ECMAScript5下,可以为对象定义隐藏属性
这样定义的属性不可枚举,故不出现在序列化结果中。
在网站开发应用中,方便避免将隐藏属性序列在数据中发送给服务器

a={x:1}

a["y"]=2;//添加非隐藏属性y

JSON.stringify(a) //{"a":1,"y",2}


Object.defineProperty(a,"z",{"value":3,enumerable:false,writeable:true,configurable:true})

console.log(a.z)  //3

JSON.stringify(a) //{"a":1,"y",2}

如果某个属性已经存在并且是非隐藏的,某个时候想把它变成隐藏属性怎么办?

先保留住原来的值,删除这个属性,最后重新赋值即可:

var _val = obj.attr;

delete obj.attr

Object.defineProperty(obj, attr, {
         value : _val,
         configurable : true,
         writable  : true

});

其他的将该属性赋值成 null 或undefined的都不可以,因为这个属性已经存在,无法改变其隐藏性。


effevo技术团队出品 (https://effevo.com
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值