JavaScript handler.has()方法



handler.has() 方法是 proxy 对象的一部分,它允许您为对象上的基本操作定义自定义行为。特别地,当使用 in 运算符检查对象上是否存在属性时,会调用 handler.has()。它接受两个参数:目标对象和正在检查的属性键。

handler.has() 方法返回一个布尔值,该值指示对象上是否存在该属性。如果找到该属性,则处理程序返回 true,指示该属性存在。否则,它将返回 false。

语法

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


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

参数

  • target − 它保存目标对象。
  • property − 它是要检查是否存在的属性的名称或符号。
  • receiver − 它是要获取的属性的名称或符号。

返回值

此方法返回一个 Boolean 值。

示例 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>

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