返回一个对象每个属性的完整的属性描述信息
在ES6后我们可以给对象定义getter和setter属性,这些不能被Object.assign复制;
这个属性就可以获取到这些属性描述信息,然后可以方便在定义其他对象时复用
// Object.getOwnPropertyDescriptors ----------------------------------------const p1 = {firstName: 'Lei',lastName: 'Wang',get fullName () {return this.firstName + ' ' + this.lastName}}// console.log(p1.fullName) // Lei Wang// const p2 = Object.assign({}, p1)// p2.firstName = 'zce'// console.log(p2) // { firstName: 'zce', lastName: 'Wang', fullName: 'Lei Wang' }const descriptors = Object.getOwnPropertyDescriptors(p1)console.log(descriptors)/*{firstName: {value: 'Lei',writable: true,enumerable: true,configurable: true},lastName: {value: 'Wang',writable: true,enumerable: true,configurable: true},fullName: {get: [Function: get fullName],set: undefined,enumerable: true,configurable: true}}*/const p2 = Object.defineProperties({}, descriptors)p2.firstName = 'zce'console.log(p2.fullName) // zce Wang
