您的位置:首页 > 移动开发 > Objective-C

Object.defineProperty() 和 Object.getOwnPropertyDescriptor()

2017-08-27 23:08 531 查看
//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 } }
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息