最近在看cesium时很多js语法看不懂,今天就差不多搞懂了一个Object.defineProperty的用法,不废话直接上代码
1 var defineProperty = Object.defineProperty; 2 var obj = { 3 id : 1, 4 5 }; 6 defineProperty(obj,‘name‘,{ 7 value : ‘wtw‘, 8 configurable:false, 9 enumerable:true, 10 writable:false,//obj.name = ‘vv‘;赋值会失败, 11 12 }); 13
上述代码给obj对象添加了一个 name 属性 并且配置了相应的属性描述符
数据描述符和存取描述符均具有以下可选键值:
configurable
- 当且仅当该属性的 configurable 为 true 时,该属性
描述符
才能够被改变,同时该属性也能从对应的对象上被删除。默认为 false。 enumerable
- 当且仅当该属性的
enumerable
为true
时,该属性才能够出现在对象的枚举属性中。默认为 false。
数据描述符同时具有以下可选键值:
value
- 该属性对应的值。可以是任何有效的 javascript 值(数值,对象,函数等)。默认为
undefined
。 writable
- 当且仅当该属性的
writable
为true
时,该属性才能被赋值运算符改变。默认为 false。//所以上述obj.name = ‘vv‘才会失败