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>

當我們執行上述程式碼時,它將生成一個輸出,其中包含網頁上顯示的文字。

廣告