JavaScript Handler defineProperty() 方法
JavaScript 中的 handler.defineProperty() 方法用于定义对象的新属性或修改现有属性。它是 Proxy 对象的一部分,可用于为另一个对象创建代理并修改其行为。此方法接受三个参数:目标对象、属性键和属性描述符。
属性描述符是一个定义属性特征的对象,例如其值、是否可写或可配置。此方法提供了一种控制属性访问和操作方式的方法,从而实现数据验证等高级功能。
语法
以下是 JavaScript handler.defineProperty() 方法的语法 -
new Proxy(target, {
defineProperty(target, property, descriptor) {}
});
参数
- target − 保存目标对象。
- property − 待检索属性描述的属性名称或符号。
- descriptor − 待定义或修改属性的描述符。
返回值
此方法返回一个布尔值,指示属性是否定义成功。
示例 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>
输出
执行上述脚本后,网页上将显示一段文本。

