JavaScript Handler getOwnPropertyDescriptor() 方法



handler.getOwnPropertyDescriptor() 是 JavaScript 代理 API 中的一个方法。它用于检索属性描述符,这些描述符提供诸如属性是否可写、可配置等信息。此方法接受两个参数:目标对象和属性名称。如果属性存在,则返回属性的描述符;否则,返回 undefined。此方法对于代理对象上的属性访问操作至关重要,它可以控制属性的行为。通过在代理对象中实现各种功能(例如验证、访问控制和动态属性生成),可以使 JavaScript 应用程序更加灵活和安全。

语法

以下是 JavaScript handler.getOwnPropertyDescriptor() 方法的语法:

new Proxy(target, {
   getOwnPropertyDescriptor(target, prop) {}
});

参数

  • target - 它保存目标对象。
  • prop - 它保存要检索其描述的属性的名称。

返回值

此方法返回一个对象或 undefined。

示例 1

让我们看一下下面的示例,我们将使用 handler.getOwnPropertyDescriptor() 并记录属性访问。

<html>
<style>
body {
   font-family: verdana;
   color: #DE3163;
}
</style>
<body>
<script>
const a = {
   car: 'Mustang',
   model: 2024
};
const b = {
   getOwnPropertyDescriptor(target, prop) {
      return Object.getOwnPropertyDescriptor(target, prop);
   }
};
const c = new Proxy(a, b);
document.write(c.car);
</script>
</body>
</html>

输出

如果我们执行上述程序,它将在网页上显示一段文本。

示例 2

考虑另一种情况,我们将对不存在的属性使用 handler.getOwnPropertyDescriptor() 并观察输出。

<html>
<style>
body {
   font-family: verdana;
   color: #DE3163;
}
</style>
<body>
<script>
const a = {
   bike: 'TRIUMPH',
   model: 2023
};
const b = {
   getOwnPropertyDescriptor(target, prop) {
      return Object.getOwnPropertyDescriptor(target, prop);
   }
};
const c = b.getOwnPropertyDescriptor(a, 'name');
document.write(c);
</script>
</body>
</html>

输出

执行上述脚本后,它将在网页上显示 undefined 文本。

示例 3

在下面的示例中,我们将定义对象上一个不可枚举的属性 'year',并使用 getOwnPropertyDescriptor() 检索其描述符。

<html>
<style>
body {
   font-family: verdana;
   color: #DE3163;
}
</style>
<body>
<script>
const a = {};
Object.defineProperty(a, 'year', {
   value: 'TUTORIALSPOINT',
   enumerable: false,
});
const b = {
   getOwnPropertyDescriptor(target, prop) {
      return Object.getOwnPropertyDescriptor(target, prop);
   }
};
const c = b.getOwnPropertyDescriptor(a, 'year');
document.write(JSON.stringify(c));
</script>
</body>
</html>

当我们执行上述代码时,它将生成一个输出,其中包含网页上显示的文本。

广告
© . All rights reserved.