Object.defineProperty()

Object.defineProperty()用来给对象定义新属性或改变对象现有属性

Object.defineProperty(obj,prop,desc)
//obj: 目标对象
//prop: 属性
//desc: 目标属性所拥有的特性(对象形式)

对象描述

1.value
设置属性的值,如果不设置,默认为undefined

let obj = {};

//未设置属性值
Object.defineProperty(obj, 'a', {})
console.log(obj);//{a: undefined}

//设置属性值
Object.defineProperty(obj, 'a', {
	value: 1
})
console.log(obj);//{a: 1}

2.writable
属性的值是否可改变,如果不设置,默认为false(不可变)

let obj = {};

//未设置writable
Object.defineProperty(obj, 'a', {
	value: 1
})
obj.a = 2;
console.log(obj.a);//1

//设置writable为true
Object.defineProperty(obj, 'a', {
	value: 1,
	writable: true
})
obj.a = 2;
console.log(obj.a);//2

3.enumerable
属性是否可枚举(使用for…in…或Object.keys()),默认为false(不可枚举)

let obj = {};

//未设置enumerable
Object.defineProperty(obj, 'a', {
	value: 1,
	writable: true
})
for(let key in obj){
	console.log(key);//未输出
}

//设置enumerable
Object.defineProperty(obj, 'a', {
	value: 1,
	writable: true,
	enumerable: true
})
for(let key in obj){
	console.log(key);//a
}

console.log(Object.keys(obj));//["a"]
//Object.keys()返回对象的可枚举属性组成的数组

3.configurable
属性是否可删除,默认为false(不可删除)

let obj = {};

//未设置configurable
Object.defineProperty(obj, 'a', {
	value: 1,
	writable: true,
	enumerable: true
})
delete obj.a;
console.log(obj);//{a: 1}

//设置configurable
Object.defineProperty(obj, 'a', {
	value: 1,
	writable: true,
	enumerable: true,
	configurable: true
})
delete obj.a;
console.log(obj);//{}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值