JavaScript Handler getOwnPropertyDescriptor() 方法



handler.getOwnPropertyDescriptor() 是 JavaScript 代理 API 中的一個方法。它用於檢索屬性描述符,這些描述符提供諸如屬性是否可寫、可配置等資訊。此方法接受兩個引數:目標物件和屬性名稱。如果屬性存在,則返回屬性的描述符;否則,返回 undefined。此方法對於代理物件上的屬性訪問操作至關重要,它可以控制屬性的行為。透過在代理物件中實現各種功能(例如驗證、訪問控制和動態屬性生成),可以使 JavaScript 應用程式更加靈活和安全。

語法

以下是 JavaScript handler.getOwnPropertyDescriptor() 方法的語法:

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

引數

  • target - 它儲存目標物件。
  • prop - 它儲存要檢索其描述的屬性的名稱。

返回值

此方法返回一個物件或 undefined。

示例 1

讓我們看一下下面的示例,我們將使用 handler.getOwnPropertyDescriptor() 並記錄屬性訪問。

<html>
<style>
body {
   font-family: verdana;
   color: #DE3163;
}
</style>
<body>
<script>
const a = {
   car: 'Mustang',
   model: 2024
};
const b = {
   getOwnPropertyDescriptor(target, prop) {
      return Object.getOwnPropertyDescriptor(target, prop);
   }
};
const c = new Proxy(a, b);
document.write(c.car);
</script>
</body>
</html>

輸出

如果我們執行上述程式,它將在網頁上顯示一段文字。

示例 2

考慮另一種情況,我們將對不存在的屬性使用 handler.getOwnPropertyDescriptor() 並觀察輸出。

<html>
<style>
body {
   font-family: verdana;
   color: #DE3163;
}
</style>
<body>
<script>
const a = {
   bike: 'TRIUMPH',
   model: 2023
};
const b = {
   getOwnPropertyDescriptor(target, prop) {
      return Object.getOwnPropertyDescriptor(target, prop);
   }
};
const c = b.getOwnPropertyDescriptor(a, 'name');
document.write(c);
</script>
</body>
</html>

輸出

執行上述指令碼後,它將在網頁上顯示 undefined 文字。

示例 3

在下面的示例中,我們將定義物件上一個不可列舉的屬性 'year',並使用 getOwnPropertyDescriptor() 檢索其描述符。

<html>
<style>
body {
   font-family: verdana;
   color: #DE3163;
}
</style>
<body>
<script>
const a = {};
Object.defineProperty(a, 'year', {
   value: 'TUTORIALSPOINT',
   enumerable: false,
});
const b = {
   getOwnPropertyDescriptor(target, prop) {
      return Object.getOwnPropertyDescriptor(target, prop);
   }
};
const c = b.getOwnPropertyDescriptor(a, 'year');
document.write(JSON.stringify(c));
</script>
</body>
</html>

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

廣告