object.defineproperty()
object.defeproperty()是什么呢?不知道的小伙伴来看看小编今天的分享吧!
一、Object.defeProperty()的定义
Object.defeProperty()会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。
二、和.操作符或者[]操作符的区别
Object.defeProperty()能够更深入地定义一个对象,它操作的不仅仅是属性的值,也可以修改属性的一些特性,比如是否可修改,是否可遍历,值也是属性其中的特性之一。
三、Object.defeProperty(obj, prop, descriptor)接受3个参数
obj: 要操作的对象
prop: 要操作的属性
descriptor: 描述符对象。包含6个属性configurable、enumerable、writable、value、get、set
注意
应当直接在Object构造器对象上调用此方法,而不是在任意一个Object类型的实例上调用。
四、属性类型
1、数据属性
数据属性包含一个数据值的位置。在这个位置可以读取和写入值
数据属性有4个描述其行为的特性
configurable: 能否通过delete删除属性,能否修改属性特性(注意是特性),能否修改为访问器属性,默认是true
enumerable: 能否通过for-遍历到该属性,默认是true
writable: 能否修改属性值,默认是true
value: 这个属性的数据值。读取属性值的时候,从这里读取;写入属性值得时候,把新值保存在这个位置。默认是undefed
例如:
let person = {}
person.name // 给person添加一个数据属性,Configurable、Enumerable、Writable默认是true,Value是undefedperson.name = 'a' // Value特性被设置为'a'
如果将configurable设置为false 那么除了value和writable之外的特性都不能被修改(本身也不能再改为true了),如果修改会被忽略,严格模式会报错。
在configurable为false的情况下,writable为true可修改为false,如果writable为false,修改为true也会被忽略,严格模式报错。
Object.defeProperty(person, 'name', { configurable: false})Object.defeProperty(person, 'name', { value: 'b'})console.log(person.name) // b configurable为false,writable为true时还能修改Object.defeProperty(person, 'name', { writable: false})
person.name = 'c' // errorObject.defeProperty(person, 'name', { writable: true}) // error
2、访问器属性
访问器属性不包含数据值,包含一对getter和setter函数(不需要存在)。
访问器属性必须通过Object.defeProperty定义。访问器属性有以下四个特性
configurable: 能否通过delete删除属性,能否修改属性特性(注意是特性),能否修改为数据属性,默认是true
enumerable: 能否通过for-遍历到该属性,默认是true
get: 在读取属性时调用的函数。默认值是undefed
set: 在写入属性时调用的函数。默认是undefed
五、数据属性和访问器属性相互转换
数据属性 -> 访问器属性
给数据属性设置了get或set特性,value和writable特性就会被废弃,该属性变为访问器属性
访问器属性 -> 数据属性
给访问器属性设置了value或writable特性,get和set特性就会被废弃,该属性变为数据属性
注意只有在configurable为true的情况下才可以相互转换,即使数据属性中在configurable为false的情况可以修改value或writable,访问器属性转数据属性只设置value或writable也不行。
趣事百科
- 秦海璐结过多少次婚 秦海璐有几次婚姻
- 女生身高多少算矮 女生身高多少以下算矮
- 地动仪是谁发明的 世界上第一架地动仪是谁发明
- 大兴安岭巨蛇事件 大兴安岭巨蛇事件真相
- 黄晓明宣布恋情 黄晓明公布新恋情
- 红色高跟鞋吉他谱 红色高跟鞋吉他谱G调弹唱
- 爱上黑社会老大:爱上黑社会老大的电影
- 安娜贝尔原型事件 安娜贝尔原型长什么样
- 李谷一的身高是多少 歌唱家李谷一身高多少厘米
- 霍思燕和江一燕什么关系 江一燕和霍思燕哪个更
- 三星堆为什么不敢研究了 三星堆为什么不敢挖掘
- 朱秀华事件:朱秀华事件骗局
- 方琼现任老公是谁 方琼老公个人资料
- 东来东往现状:东来东往是哪里人
- 太湖冤案事件真相 太湖冤案事件真相揭秘
- 双鱼玉佩恐怖的黑白照 双鱼玉佩黑白照片大全