Object.defineproperty方法(详解)

2 篇文章 0 订阅

Object.defineproperty 的作用就是直接在一个对象上定义一个新属性,或者修改一个已经存在的属性

Object.defineproperty可以接收三个参数

Object.defineproperty(obj, prop, desc)

obj :  第一个参数就是要在哪个对象身上添加或者修改属性

prop : 第二个参数就是添加或修改的属性名

desc : 配置项,一般是一个对象

来一个简单的例子

 let  person = {
        name:"张三",
        age: 18
          }
          Object.defineProperty(person,'sex',{
            value:"男"
          })
          console.log(person)

 这不就是添加了

第三个参数里面还有6个配置控住属性

    writable:	是否可重写
 
    value:  	当前值
 
    get:    	 读取时内部调用的函数
 
	set:        写入时内部调用的函数
	
	enumerable: 	是否可以遍历
 
	configurable: 	是否可再次修改配置项

 

        let  person = {
        name:"张三",
        age: 18
          }
          Object.defineProperty(person,'sex',{
              value:"男",       //设置属性值
              enumerable:true, //控制属性是否可以枚举,默认值是false
              writable:true, //控制属性是否可以被修改,默认值是false
              configurable:true //控制属性是否可以被删除,默认值是false
          })
          console.log(person)

  •  writable:true           控制属性是否可以被修改,控制台也看的当为TRUE的时候属性值可以被修改

  • configurable:true      控制属性是否可以被删除

  • enumerable:true      控制属性是否可以枚举,true的话简单的说就是可以遍历获取该值

  •  let number = 18
            let person = {
                name:'张三',
                sex:'男',
            }
     
            Object.defineProperty(person,'age',{
                //当有人读取person的age属性时,get函数(getter)就会被调用,且返回值就是age的值
                get(){
                    console.log('有人读取age属性了')
                    return number
                },
                //当有人修改person的age属性时,set函数(setter)就会被调用,且会收到修改的具体值
                set(value){
                    console.log('有人修改了age属性,且值是',value)
                    number = value
                }
            })
            console.log(person)

    get:当有人读取person的age属性时,get函数(getter)就会被调用,且返回值就是age的值

    set:当有人修改person的age属性时,set函数(setter)就会被调用,且会收到修改的具体值

    可以实现一个数据的联动效果

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值