Object.defineProperty()方法

Object.defineProperty()方法

1.Object.defineProperty方法参数:—Object.defineProperty(obj,attrName,describe)
该方法接受3个参数

1.obj : 为操作的对象
2.attrName: 为操作的对象的属性  (操作的对象内没有该属性,则表示为添加该属性)
3.describe: 为操作属性的特性  (是一个对象)
  • describe(特性)参数有的属性
    (1).value: 属性的属性值 不设置则为undefined
    (2).writable: 该属性的值是否可以改变
    (3).enumerable: 属性是否可以被枚举 (是否可以被for in Object.key()遍历) 默认为false(不可以) ,设置为true(可以)
    (4).configurable: 属性的特性是否可以被修改,是否可以删除该属性(delete obj.attrName)。默认为false(不可以), 设置为true(可以)。

2.使用存取器(set,get)方法来设置和获取该属性。
此时describe(特性)内不能有 value和 writable 特性。

Object.defineProperty(obj,attrName,{
					set:function(val){...} | undefined,
					get:function(){...} | undefined,
					enumerable:true | false,
					configurable:true | false
				})
				使用setter getter 存取器之后就不允许使用 value 和 writable特性
				
				若get方法设置为undeifned(或者没有设置),则该属性的值为undefined,而且无论set方法设置与否,都不可以设置该属性的值了
				若set方法设置为undefined,但是拥有get方法,则该属性值可以访问,但是无法设置新值,相当与写了writable:false;
				当特性名称不写,则默认为false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Object.defineProperty是一个用来在一个对象上定义新属性或者修改已存在属性的方法。[2]它可以通过设置属性的描述符来控制属性的行为,包括属性的可枚举性、可配置性、可写性以及属性的等。通过使用Object.defineProperty,我们可以实现对对象属性的监听和控制,从而实现双向数据绑定。 举个简单的例子,假设我们有一个名为person的对象,其中包含name和age两个属性,我们可以通过使用Object.defineProperty来添加一个新的属性sex,并设置它的为男。代码如下: let person = { name:"码农", age: 18 } Object.defineProperty(person,'sex',{ value:"男" }) console.log(person) 运行以上代码,我们可以在控制台中看到person对象中已经添加了一个名为sex的属性,其为男。这就是Object.defineProperty的基本用法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue源码学习之Object.defineProperty对象属性监听](https://download.csdn.net/download/weixin_38663151/14904644)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Object.defineproperty方法(详解)](https://blog.csdn.net/weixin_57677300/article/details/126278467)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值