1. Object.defineProperty(object, propertyName, descriptor)

   数据属性:

descriptor描述符对象属性:
configurable: 表示这个对象的属性能否delete,默认为true
enumerable: 能否被for...in...循环返回属性,默认为true
writable: 能否修改属性的value
value: 属性值

访问器属性:
descriptor描述符对象属性:
configurable
enumerable
getter()
setter()



let obj = {
name: 'twinkleG'
};
Object.defineProperty(obj, 'name', {
configurable: true, // 表示这个对象的属性能否delete,默认为true
enumerable: true, // 能否被for...in...循环返回属性,默认为true
writable: true,
value: 'hello'
});
console.log(obj.name) // hello


2. Object.defineProperties(object, {xxx}) 可以一次定义多个属性的特性

3. Object.getOwnPropertyDescriptor(object, propertyName) 获取给定属性的描述符

4. Object.getOwnPropertyDescriptors(object) 获取对象的所有属性的描述符对象