JavaScript Handler has() 方法
handler.has() 方法是代理对象的一部分,它允许您为对象的基本操作定义自定义行为。具体来说,当使用 in 运算符检查对象上是否存在某个属性时,会调用 handler.has()。它接受两个参数:目标对象和被检查的属性键。
handler.has() 方法返回一个布尔值,指示对象上是否存在该属性。如果找到该属性,处理程序将返回 true 表示该属性存在。如果不存在,则返回 false。
语法
以下是 JavaScript handler.has() 方法的语法 -
new Proxy(target, {
has(target, prop) {}
});
参数
- target − 保存目标对象。
- property − 待检查属性是否存在的名称或符号。
- receiver − 待获取属性的名称或符号。
返回值
此方法返回一个布尔值。
示例 1
我们来看以下示例,我们将检查对象中是否存在某个属性。
<html>
<style>
body {
font-family: verdana;
color: #DE3163;
}
</style>
<body>
<script>
let x = {
car: 'POLO GT',
model: 2024
};
let y = {
has(a, b) {
return b in a;
}
};
let c = new Proxy(x, y);
document.write('car' in c);
</script>
</body>
</html>
输出
如果我们执行上述程序,它将在网页上显示一条文本,表明该属性存在。
示例 2
考虑另一种场景,我们将阻止对某些属性的访问,这些属性实际上对代理是隐藏的。
<html>
<style>
body {
font-family: verdana;
color: #DE3163;
}
</style>
<body>
<script>
let x = {
bike: 'Hayabusa',
model: 2025
};
let y = {
has(a, b) {
return b !== 'bike';
}
};
let c = new Proxy(x, y);
document.write('bike' in c);
</script>
</body>
</html>
输出
执行上述脚本后,网页上将显示 false,表示该属性已被隐藏。
示例 3
在下面的示例中,我们将检查属性的值是否为"POLO GT",并获取输出。
<html>
<style>
body {
font-family: verdana;
color: #DE3163;
}
</style>
<body>
<script>
let x = {
car: 'POLO GT',
age: 25
};
let y = {
has(a, b) {
return a[b] === 'POLO GT';
}
};
let c = new Proxy(x, y);
document.write('car' in c);
</script>
</body>
</html>
当我们执行上述代码时,它将生成由网页上显示的文本组成的输出。

