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)
js 如何将某个属性设置成隐藏的_第1张图片

你可能感兴趣的:(前端)