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(对象)查看对象所有属性的信息

 

posted @ 2019-07-20 13:55  tooSimple_sz  阅读(336)  评论(0)    收藏  举报