对象.get属性描述符()

对象.get属性描述符

Object.getOwnPropertyDescriptor()

该方法返回给定对象自己的属性(即直接存在于对象上而不是对象的原型链中的属性描述符)。Object.getOwnPropertyDescriptor()

const object1 = {
  property1: 42

}

const descriptor1 = Object.getOwnPropertyDescriptor(object1, 'property1');

console.log(descriptor1.configurable);
// expected output: true

console.log(descriptor1.value);
// expected output: 42

语法

Object.getOwnPropertyDescriptor(obj, prop)

参数

obj
要在其中查找属性的对象。
prop
要检索其描述的属性的名称或符号。

返回值

给定属性的属性描述符(如果存在于对象上,则未定义。

描述

此方法允许检查财产的精确描述。JavaScript 中的属性由字符串值的名称或Symbol和属性描述符组成。有关属性描述符类型及其属性的详细信息,请参阅Object.defineproperty()。

属性描述符是具有以下一些属性的记录:

value
与属性关联的值(仅描述数据符)。
writable
true仅当可能更改与属性关联的值(仅限数据描述符)时。"
get
用作属性获取器的函数,如果没有 getter(仅访问符描述符)则未定义。
set
用作属性的设定器的函数,如果没有设置器(仅限访问符描述符)则未定义。
configurable
true仅当此属性描述符的类型可能更改,并且该属性可以从相应的对象中删除时。
enumerable
true仅当此属性在枚举相应对象的属性期间出现时才会出现。

var o, d;

o = { get foo() { return 17; } };
d = Object.getOwnPropertyDescriptor(o, 'foo');
// d is {
//   configurable: true,
//   enumerable: true,
//   get: /*the getter function*/,
//   set: undefined
// }

o = { bar: 42 };
d = Object.getOwnPropertyDescriptor(o, 'bar');
// d is {
//   configurable: true,
//   enumerable: true,
//   value: 42,
//   writable: true
// }

o = { [Symbol.for('baz')]: 73 }
d = Object.getOwnPropertyDescriptor(o, Symbol.for('baz')); 
// d is {
//   configurable: true,
//   enumerable: true,
//   value: 73,
//   writable: true
// }

o = {};
Object.defineProperty(o, 'qux', {
  value: 8675309,
  writable: false,
  enumerable: false
});
d = Object.getOwnPropertyDescriptor(o, 'qux');
// d is {
//   value: 8675309,
//   writable: false,
//   enumerable: false,
//   configurable: false
// }

笔记

在 ES5 中,如果此方法的第一个参数不是对象(基元),则它将导致TypeError。在 ES2015 中,非对象第一个参数将首先被强制到对象。

Object.getOwnPropertyDescriptor('foo', 0);
// TypeError: "foo" is not an object  // ES5 code

Object.getOwnPropertyDescriptor('foo', 0);
// Object returned by ES2015 code: {
//   configurable: false,
//   enumerable: true,
//   value: "f",
//   writable: false
// }
发布了53 篇原创文章 · 获赞 141 · 访问量 2500

猜你喜欢

转载自blog.csdn.net/qq_45768871/article/details/105251236