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>
输出
执行上述脚本后,网页上将显示未定义的文本。
示例 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>
当我们执行上述代码时,它将生成由网页上显示的文本组成的输出。

