JavaScript handler.getOwnPropertyDescriptor()方法



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

语法

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


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

参数


	
  • target − 它保存目标对象。
  • prop − 它包含应检索其描述的属性的名称。

返回值

此方法返回 object 或 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: 'QIKEPUCOM',
	 	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>

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