当前位置:家常菜>百科>科技>正文

object.defineproperty

人气:490 ℃/2023-09-06 05:33:54

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也不行。

  • 黄牌车代表什么意思?

    黄牌车代表的意思:1、黄牌车就是车牌号码是黄颜色的车,黄牌所指的是大型车辆、摩托车、驾驶车厢的教练车牌,样式与蓝卡是一样的——教练车的样式略有不同,是[某A6645学];2、车...

    问答查看全文>>
  • 起亚k3保养灯归零步骤是什么

    1.首先将起亚k3的电源处于ON模式。2.然后按下方向盘的切换按钮切换到用户设置,可以看到保养设置。3.最后进入保养设置,长按ok按键重置保养里程时间就完成了。随着开车时间的增...

    问答查看全文>>
  • 公司求职简历范文

    公司求职简历怎么写呢?一起来看看小编今天的分享吧。公司求职简历可以从三个方面进行描写,首先可以描写自己的基本信息,如姓名、年龄等。第二个就是描写自己获得过什么成就,第三个要描写...

    教育查看全文>>
  • 汽油和水相互能溶解吗

    水是无机物,油是有机物,所以这两种物质是不能互溶的,因为汽油的密度比水的小,所以汽油会漂浮在上面。燃油系统中如有水分会造成汽车发动机功能受损。根据品质的标准规定,一般压缩比在8...

    问答查看全文>>
  • 福特嘉年华电瓶型号规格

    福特嘉年华的电瓶型号规格是LFN718520,电压为12V。汽车使用的产品通常分为铅酸蓄电池和免维护型蓄电池两种,铅酸蓄电池是由铅和铅的氧化物构成的,电解液是硫酸的水溶液,铅酸...

    问答查看全文>>
本网站部分内容、图文来自于网络,如有内容侵犯您的合法权益,请及时与我们联系,我们将第一时间安排核实及删除!
CopyRight © 2007-2024 家常菜 All Rights Reserved. 手机版