Object.defineProperty() 和 Object.getOwnPropertyDescriptor()

//Object.defineProperty() 和 Object.getOwnPropertyDescriptor()

//Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。

let obj = {};

Object.defineProperty(obj,'prop1',{
	value:'789',
	enumerable: true
});
console.log(obj);//{ prop1: '789' }

Object.defineProperties(obj,{
	'prop2':{
		value:'123',
		enumerable:true
	},
	'prop3':{
		value:'456',
		enumerable:true
	}
});
console.log(obj);//{ prop1: '789', prop2: '123', prop3: '456' }

//Object.getOwnPropertyDescriptor() 方法返回指定对象上一个自有属性对应的属性描述符
// 该方法允许对一个属性的描述进行检索。在 Javascript 中, 属性 由一个字符串类型的“名字”(name)和一个“属性描述符”(property descriptor)对象构成。更多关于属性描述符类型以及他们属性的信息可以查看:Object.defineProperty.

/*
一个属性描述符是一个记录,由下面属性当中的某些组成的:

value
该属性的值(仅针对数据属性描述符有效)
writable
当且仅当属性的值可以被改变时为true。(仅针对数据属性描述有效)
get
获取该属性的访问器函数(getter)。如果没有访问器, 该值为undefined。(仅针对包含访问器或设置器的属性描述有效)
set
获取该属性的设置器函数(setter)。 如果没有设置器, 该值为undefined。(仅针对包含访问器或设置器的属性描述有效)
configurable
当且仅当指定对象的属性描述可以被改变或者属性可被删除时,为true。
enumerable
当且仅当指定对象的属性可以被枚举出时,为 true。
*/

const prop1 = Object.getOwnPropertyDescriptor(obj,'prop1');
console.log(prop1);
/*输出指定属性的属性描述符 没有显示定义的属性描述符默认为 false
{ value: '789',
  writable: false,
  enumerable: true,
  configurable: false }
*/

const props = Object.getOwnPropertyDescriptors(obj);
console.log(props);
/*输出所有属性的属性描述符
{ prop1: 
   { value: '789',
     writable: false,
     enumerable: true,
     configurable: false },
  prop2: 
   { value: '123',
     writable: false,
     enumerable: true,
     configurable: false },
  prop3: 
   { value: '456',
     writable: false,
     enumerable: true,
     configurable: false } }
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值