您的位置:首页 > Web前端 > JavaScript

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

2015-10-30 16:52 537 查看
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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: