首頁常見問題正文

Object.defineProperty怎么用?有哪三個參數(shù)?作用分別是什么?

更新時間:2023-06-09 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  Object.defineProperty()是JavaScript中的一個方法,用于定義或修改對象的屬性。它允許你精確地控制屬性的特性(如可寫性、可枚舉性和可配置性)。

  Object.defineProperty() 方法接受三個參數(shù):

  1.對象(Object)

  要定義或修改屬性的對象。

  2.屬性名(Property name)

  一個字符串,表示要定義或修改的屬性的名稱。

  3.屬性描述符(Property descriptor)

  一個對象,描述要定義或修改的屬性的特性。

  屬性描述符對象包含以下可選屬性:

  ·value:屬性的值。默認(rèn)為 undefined。

  ·writable:屬性的可寫性。如果為 true,屬性的值可以被修改;如果為 false,屬性的值不可修改。默認(rèn)為 false。

  ·enumerable:屬性的可枚舉性。如果為 true,屬性可以通過 for...in 循環(huán)或 Object.keys() 方法枚舉到;如果為 false,屬性不可枚舉。默認(rèn)為 false。

  ·configurable:屬性的可配置性。如果為 true,屬性的特性可以被修改或?qū)傩钥梢员粍h除;如果為 false,屬性的特性不可修改且屬性不可刪除。默認(rèn)為 false。

  接下來我們看一個使用Object.defineProperty()的示例:

const obj = {};

Object.defineProperty(obj, 'name', {
  value: 'John',
  writable: false,
  enumerable: true,
  configurable: true
});

console.log(obj.name); // 輸出: John
obj.name = 'Jane'; // 因?yàn)?nbsp;writable 為 false,所以此賦值操作無效
console.log(obj.name); // 輸出: John

for (let key in obj) {
  console.log(key); // 輸出: name
}

delete obj.name; // 因?yàn)?nbsp;configurable 為 true,所以可以刪除屬性
console.log(obj.name); // 輸出: undefined

  在上述示例中,通過Object.defineProperty()方法定義了一個名為name的屬性,它的值為 'John',不可修改(writable: false),可枚舉(enumerable: true),可配置(configurable: true)。最后,我們演示了對該屬性的訪問、賦值、枚舉和刪除操作,并解釋了屬性描述符的作用。

分享到:
在線咨詢 我要報(bào)名
和我們在線交談!