Object构造函数方法Object.getOwnPropertyDescriptors()

摘要:Object.getOwnPropertyDescriptors(obj)用来获取一个对象的所有自身属性的描述符;返回值所指定对象的所有自身属性的描述符,如果没有任何自身属性,则返回空对象

Object.getOwnPropertyDescriptors(obj)用来获取一个对象的所有自身属性的描述符

obj

任意对象

返回值

所指定对象的所有自身属性的描述符,如果没有任何自身属性,则返回空对象


示例

const obj = {
  name: 'h'
}

Object.defineProperty(obj, 'age', {
  value: 11
})

const result = Object.getOwnPropertyDescriptors(obj)

console.log(result)

// {
//   name: { value: 'h', writable: true, enumerable: true, configurable: true },
//   age: {
//     value: 11,
//     writable: false,
//     enumerable: false,
//     configurable: false
//   }
// }

const target = {
  a: 1,
  b: 2
};

Object.assign(target, obj)

console.log(target) // { a: 1, b: 2, name: 'h' } 因为obj的age属性,是不可枚举属性
const result1 = Object.getOwnPropertyDescriptors(target)
console.log(result1)

// 浅拷贝一个对象
// Object.assign()方法只能拷贝源对象的可枚举属性,同时拷贝时无法拷贝属性的特性们,而且访问器属性会被转换成数据属性,也无法拷贝源对象的原型。
// 该方法配合Object.create() 方法可以实现上面说的这些

Object.create( // 使用现有的对象来提供新创建的对象的__proto__。
  Object.getPrototypeOf(obj), // 返回指定对象的原型(内部[[Prototype]])属性的值
  Object.getOwnPropertyDescriptors(obj)
)

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_9266