object.defineproperty
object.defineproperty()是什么呢?不知道的小伙伴来看看小编今天的分享吧!
一、Object.defineProperty()的定义:
Object.defineProperty()会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。
二、和.操作符或者[]操作符的区别:
Object.defineProperty()能够更深入地定义一个对象,它操作的不仅仅是属性的值,也可以修改属性的一些特性,比如是否可修改,是否可遍历,当然值也是属性其中的特性之一。
三、Object.defineProperty(obj, prop, descriptor)接受3个参数:
obj: 要操作的对象
prop: 要操作的属性
descriptor: 描述符对象。包含6个属性:configurable、enumerable、writable、value、get、set
注意:
应当直接在Object构造器对象上调用此方法,而不是在任意一个Object类型的实例上调用。
四、属性类型:
1、数据属性
数据属性包含一个数据值的位置。在这个位置可以读取和写入值
数据属性有4个描述其行为的特性:
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也不行。
-
福特蒙迪欧雨刮器尺寸接口类型,蒙迪欧雨刮器拆卸更换教程
福特蒙迪欧的尺寸为26+26英寸,使用专用接口。无固定更换周期,出现异响或刮不干净时,及时维修更换。福特蒙迪欧雨刮器更换步骤①将雨刮器往车头方向掰动,雨刮器摆动到一定位置会固定...
问答查看全文>> -
女王出逃是什么意思 女王出逃是什么梗
女王出逃,是指英国女王因为自己居住的白金汉宫接待活动比较频繁,所以感染新冠肺炎的几率较高,所以撤离了白金汉宫。女王出逃来源:因为英国首席科学顾问提出群体免疫的应对措施,引起了很...
热词查看全文>> -
3M空调滤网怎么样 3M空调滤网有用吗
如果你也和我一样长时间呆在空调房不妨试试这个空调过滤网。下面小编为大家介绍下3M空调滤网有用吗?3M空调滤网怎么样3M空调滤网有用吗3M空调静电滤网拿到手蛮大一卷的,本人买的是...
品牌查看全文>> -
有关春光明媚的语句说说 经典语句说说
1、人这一生,一切关系的疏远和割裂都是为了和过去的自己分手。2、我们最可怕的敌人不是怀才不遇,而是我们的踌躇.犹豫。将自己定位为某一种人,于是,自己便成了那种人。3、心态决定我...
语录查看全文>> -
php工程师的工作职责
php工程师的工作职责有什么呢?一起来了解一下吧。1、开发、维护符合功能、性能要求的软件产品;2、参与项目需求分析,进行系统框架和核心模块的详细设计3、根据新产品开发进度和任务...
科技查看全文>>
推荐
- 1现代胜达万向节可以拆下来吗?136
- 2给老师写一封信精选5篇600字267
- 3冬季伤感的句子422
- 4自动挡车怎样开不伤车379
- 5汽车停小区被刮了怎么办366
- 6有意境的人间绝句145
- 7李姓女宝宝起名2022年407
- 8蒂佳婷v7素颜霜价格 蒂佳婷v7素颜霜孕妇可用吗444