object.defineproperty()(object)
作者:百科火 更新 :2022-03-10 20:00:00 科技百科

object.defineproperty()是什么?不知小伙伴来看看小编今天的分享吧!
一、Object.defineProperty()定义:
Object.defineProperty()将新属性直接定义为一个对象,或修改一个对象的现有属性,并返回该对象。
二、和.操作符或[]操作符的区别:
Object.defineProperty()可以更深入地定义一个对象,它不仅可以操作属性的值,还可以修改属性的一些特征,比如是否可以修改,当然值也是属性的特征之一。
三、Object.defineProperty(obj,prop,descriptor)接受三个参数:
obj: 要操作的对象
prop: 要操作的属性
descriptor: 描述符对象。包括六个属性:configurable、enumerable、writable、value、get、set
注意:
应当直接在Object在构造对象上调用这种方法,而不是在任何一个Object调用类型实例。
四、属性类型:
1、数据属性
数据属性包含数据值的位置。在这个位置读写值
描述其行为的数据属性有四个特征:
configurable: 能否通过delete删除属性,可以修改属性特性(注意是特性),可以修改为访问器属性,默认是true
enumerable: 能否通过for-in通过这个属性,默认是true
writable: 能否修改属性值,默认是true
value: 这个属性的数据值。读取属性值时,从这里读取;当写入属性值时,将新值保存在此位置。默认情况下undefined
例如:
let person = {}
person.name // 给person添加数据属性,Configurable、Enumerable、Writable默认是true,Value是undefinedperson.name = 'a' // Value特征设置为'a'
如果将configurable设置为false 那么除了value和writable其他特征不能修改(本身也不能修改)true),如果修改会被忽略,严格的模式会报错。
在configurable为false的情况下,writable为true可修改为false,如果writable为false,修改为true也会被忽视,严格报错模式。
Object.defineProperty(person,'name',{ configurable: false})Object.defineProperty(person,'name',{ value: 'b'})console.log(person.name) // b configurable为false,writable为true时还能修改Object.defineProperty(person,'name',{ writable: false})
person.name = 'c' // errorObject.defineProperty(person,'name',{ writable: true}) // error
2、访问器属性
访问器属性不包括数据值,包括一对getter和setter函数(不需要同时存在)。必须通过访问器属性Object.defineProperty定义。访问器属性有四个特点:
configurable: 能否通过delete删除属性,可以修改属性特性(注意是特性),可以修改为数据属性,默认是true
enumerable: 能否通过for-in通过这个属性,默认是true
get: 读取属性时调用的函数。默认值是undefined
set: 写入属性时调用的函数。undefined
五、数据属性与访问器属性相互转换:
数据属性 -> 访问器属性
设置数据属性get或set特性,value和writable该属性将被废弃,该属性将成为访问器属性
访问器属性-> 数据属性
设置了访问器属性value或writable特性,get和set该属性将被废弃,该属性将成为数据属性
注:只有在configurable为true即使在数据属性中,也可以相互转换configurable为false可修改的情况value或writable,访问器属性转数据属性仅设置value或writable也不行。
以上是小编今天的分享。我希望它能帮助你。
- END -
我国有多少个自治区和直辖市(我国有5个自治区和4个直辖市)
我国有多少个自治区和直辖市,我国有5个自治区和4个直辖市。自治区包括新疆维吾尔自治区(新)、宁夏回族自治区(宁)、西藏...
熙熙攘攘皆为利往意思(人来人往皆为利往含意:世人为了更好地权益分道扬镳)
熙熙攘攘皆为利往意思,熙熙攘攘皆为利往意思:天下人为了利益各奔东西。原句是:天下熙熙,皆为利来;天下攘攘,皆为利往。出...
奶奶与孙女关系怎么填是什么关系(奶奶与孙女的关系是什么?)
奶奶与孙女的关系是祖孙关系,在填表的过程中,在关系一栏里,奶奶和孙女的关系可以直接填写为祖孙关系。祖孙关系是建立...
能虫是什么动物(能虫是四川老家土话,它是一种长约五厘米的小虫,全身墨绿,头部)
能虫是什么动物,能虫是四川老家土话,它是一种长约五厘米的小虫,全身墨绿,头部两根红色的须角。能虫为天蚕的幼虫,又可以...
市委和市政府有啥区别
市委和市政府有啥区别,1、组织机构不同:市委是市级党的党政机关,代表党开展工作;市政府是该市的行政机关,代表地方开展...
老舍的《茶馆》主要讲了什么
话剧《茶馆》是著名作家老舍先生创作的一部不朽的名著,三幕话剧剧本,1957年完成...
狗奶人能喝吗(狗奶人不能喝的,人喝狗奶会感染病毒,容易引起腹泻、胀痛、乃至)
狗奶人不能喝的,人喝狗奶会感染病毒,容易引起腹泻、胀痛、乃至呕吐的症状。因为狗奶含有很多异种抗原,这些异种抗原...
字母圈中s是什么意思m是什么意思(S是施虐癖(sadism)的简称)
S是施虐癖(sadism)的简称,M是受虐癖(masochism)的简称。双方分别从施虐和受虐中获得快感,这种施虐和受虐包括精神和肉体...
银行一般几点钟下班(正常工作日银行的下班时间)
正常工作日银行的下班时间一般是17:00,而周末或者节假日银行的下班时间会稍微早一些,一般是16:00。银行的下班时间在正...
每隔多少年才闰一次2月
闰年是历法中的名词,分为普通闰年和世纪闰年。闰年(Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公...