首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Object.getOwnPropertyDescriptors

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

语法

代码语言:javascript
复制
Object.getOwnPropertyDescriptors(obj)

参数

obj任意对象

返回值

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

示例

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

A property descriptor is a record with some of the following attributes:

value与属性关联的值 (仅限数据描述符). 如果且仅当与该属性关联的值可能被更改时 (仅限数据描述符), 则为可写。

get用作属性的 getter 的函数; 如果没有 getter (仅限访问器描述符), 则为未定义。

set用作属性的 setter 的函数; 如果没有 setter (仅限访问器描述符), 则为未定义。

configurabletrue 如果且仅当此属性描述符的类型可能被更改, 并且该属性可以从相应的对象中删除。

enumerabletrue 如果且仅当在相应对象的属性枚举过程中显示此属性时。

示例

浅拷贝一个对象

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

代码语言:javascript
复制
Object.create(
  Object.getPrototypeOf(obj), 
  Object.getOwnPropertyDescriptors(obj) 
);

创建子类

创建子类的典型方法是定义子类,将其原型设置为超类的实例,然后在该实例上定义属性。这可能会让尴尬,特别是对于 getters 和 setter 而言。 相反,您可以使用此代码设置原型:

代码语言:javascript
复制
function superclass() {}
superclass.prototype = {
  // Define your methods and properties here
};
function subclass() {}
subclass.prototype = Object.create(
  superclass.prototype,
  {
    // Define your methods and properties here
  }
);

规范

Specification

Status

Comment

ECMAScript Latest Draft (ECMA-262)The definition of 'Object.getOwnPropertyDescriptors' in that specification.

Living Standard

Initial definition in ECMAScript 2017.

ECMAScript 2017 (ECMA-262)The definition of 'Object.getOwnPropertyDescriptors' in that specification.

Standard

浏览器支持

Feature

Chrome

Edge

Firefox

Internet Explorer

Opera

Safari

Basic Support

54

(Yes)

50

No

41

10

Feature

Android

Chrome for Android

Edge mobile

Firefox for Android

IE mobile

Opera Android

iOS Safari

Basic Support

?

54

(Yes)

50

No

?

?

扫码关注腾讯云开发者

领取腾讯云代金券