更新時(shí)間:2023-06-09 來源:黑馬程序員 瀏覽量:
Object.defineProperty()是JavaScript中的一個(gè)方法,用于定義或修改對(duì)象的屬性。它允許你精確地控制屬性的特性(如可寫性、可枚舉性和可配置性)。
Object.defineProperty() 方法接受三個(gè)參數(shù):
要定義或修改屬性的對(duì)象。
一個(gè)字符串,表示要定義或修改的屬性的名稱。
一個(gè)對(duì)象,描述要定義或修改的屬性的特性。
屬性描述符對(duì)象包含以下可選屬性:
·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。
接下來我們看一個(gè)使用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()方法定義了一個(gè)名為name的屬性,它的值為 'John',不可修改(writable: false),可枚舉(enumerable: true),可配置(configurable: true)。最后,我們演示了對(duì)該屬性的訪問、賦值、枚舉和刪除操作,并解釋了屬性描述符的作用。