学习笔记——Object.defineProperty()方法

一.基本用法

Object.defineProperty()方法是给对象添加属性用的
Object.defineProperty(object, propertyname, descriptor);
其中三个参数分别是:
object:对象
propertyname:属性名
descriptor:要添加的属性值

let person = {
	name: '张三',
	sex: '男'
}

Object.defineProperty(person, 'age', {
	value: 18,   //这个age不能被枚举(不能遍历)
})	

console.log(person);

输出的结果如下:
在这里插入图片描述
这个age和name、sex的颜色是不一样的,它不能被枚举(不能遍历)。

Object.defineProperty()方法添加的属性默认是不能修改、删除、遍历,但可以通过修改一些默认值设置是否可修改、删除、遍历。

let person = {
            name: '张三',
            sex: '男'
        }

        Object.defineProperty(person, 'age', {
            value: 18,   //这个age不能被被枚举(不参与遍历)
            enumerable: true,   //控制属性是否可以枚举,默认为false
            writable: true,        //控制对象是否可修改
            configurable: true     //控制属性是否可以被删除
        })

二.Object.defineProperty()中的高级配置项

get
		let number = 18;
        let person = {
            name: '张三',
            sex: '男'
        }

        Object.defineProperty(person, 'age', {
            //当有人读取person的age属性时,get函数(getter)就会被调用,且返回值就是age的值
            get: function () {
                return number
            }
        })

这个age值不能直接被看到,点开(…)才能看到,且每一次访问age,都会触发get函数的调用。
在这里插入图片描述
在这里插入图片描述

set
Object.defineProperty(person, 'age', {
    //当有人修改person的age属性时,set函数(setter)就会被调用,且会收到修改的具体值
	set: (value){
		console.log(value);
		number = value;
	}
})

修改age
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值