JavaScript handler.defineProperty() 方法



JavaScript 中的 handler.defineProperty() 方法用于定义对象上的新属性或修改现有属性。它是 Proxy 对象的一部分,可用于为另一个对象创建代理并修改其行为。此方法采用三个参数:目标对象、属性键和属性描述符。

属性描述符是一个对象,用于定义属性的特征,例如其值、是可写的还是可配置的。此方法提供了一种控制属性访问和操作方式的方法,从而支持数据验证等高级功能。

语法

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


new Proxy(target, {
	 	defineProperty(target, property, descriptor) {}
});

参数

  • target − 保存目标对象。
  • property − 它是要检索其描述的属性的名称或符号。
  • descriptor - 要定义或修改的属性的描述符。

返回值

此方法返回一个 Boolean 值,该值指示属性是否已成功定义。

示例 1

让我们看看下面的示例,我们将在其中定义一个新属性。


<html>
<style>
body {
	 	font-family: verdana;
	 	color: #DE3163;
}
</style>
<body>
<script>
let x = {};
let y = {
	 	defineProperty(x, propertyKey, descriptor) {
	 	 	 document.write(JSON.stringify(descriptor));
	 	 	 return Reflect.defineProperty(x, propertyKey, descriptor);
	 	}
};
let z = new Proxy(x, y);
z.tp = 132;
</script>
</body>
</html>

输出

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

示例 2

考虑另一个场景,我们将修改现有属性。


<html>
<style>
body {
	 	font-family: verdana;
	 	color: #DE3163;
}
</style>
<body>
<script>
let x = {
	 	tp: 1122
};
let y = {
	 	defineProperty(x, propertyKey, descriptor) {
	 	 	 document.write(JSON.stringify(descriptor));
	 	 	 return Reflect.defineProperty(x, propertyKey, descriptor);
	 	}
};
let c = new Proxy(x, y);
c.tp = 'WELCOME';
</script>
</body>
</html>

输出

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