JavaScript中的数据属性和访问器属性
JavaScript中的属性包含数据属性和访问器属性
1.数据属性。数据属性包含的是一个值的位置,可以对这个值进行读写。
- 数据属性又包含了四个特性。configurable,writable,enumerable,和value,分别代表属性可配置,可写,可枚举,值
- 可以通过Object.getOwnPropertyDescriptor(对象,属性名)查看属性的特性
- 修改数据属性的方法是Obejct.defineProperty(对象,属性名,描述符对象)
- 将属性的configurable设置为false后,只能修改writable的属性,否则在严格模式下回报错
2.访问器属性。这个属性不包含数据值,包含的是一对get和set方法,在读写访问器属性时,就是通过这两个方法来进行操作处理的。访问器属性包含的四个特性:
- configurable:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或能否把属性修改为访问器属性,默认为false
- enumerable:表示能否通过for-in循环返回属性,默认为false
- Get:在读取属性时调用的函数,默认值为undefined
- Set:在写入属性时调用的函数,默认值为undefined
访问器属性不能直接定义,要通过Object.defineProperty()这个方法来定义。
var person = {name:'tu'} Object.defineProperty(person,'age',{ get:function(){return 10}, set:function(value){this.age = 10+value} //这样设置会产生递归 }) person.age = 10 //报错 ,因为设置name属性会递归无限循环 alert(person.age) for(prop in person){alert(prop)} //只会打印出name属性,age属性默认不可枚举
如果没有设置get则这个属性不可读,如果没有设置set,这个属性不可修改;
如果set和set都没定义那这个属性就是数据属性
3.可以通过Object.defineProperties(对象,描述对象)定义多个属性(数据属性或者访问器属性),通过这个方式新增的属性 属性特性都为false
可以通过Object.getOwnPropertyDescriptors(对象)查看对象所有属性的信息

浙公网安备 33010602011771号