Object.defineProperties()
靜態方法 Object.defineProperties() 在物件上直接定義新屬性或修改現有屬性,並返回該物件。
試一試
const object = {};
Object.defineProperties(object, {
property1: {
value: 42,
writable: true,
},
property2: {},
});
console.log(object.property1);
// Expected output: 42
語法
js
Object.defineProperties(obj, props)
引數
obj-
要定義或修改屬性的物件。
props-
一個物件,其鍵表示要定義或修改的屬性名稱,其值是描述這些屬性的物件。
props中的每個值必須是資料描述符或訪問器描述符;不能同時是兩者(有關更多詳細資訊,請參閱Object.defineProperty())。資料描述符和訪問器描述符可選擇包含以下鍵
可配置-
當且僅當此屬性描述符的型別可以更改,並且該屬性可以從相應的物件中刪除時為
true。預設為false。 可列舉-
當且僅當該屬性在相應的物件屬性列舉期間出現時為
true。預設為false。
資料描述符還包含以下可選鍵
value-
與屬性關聯的值。可以是任何有效的 JavaScript 值(數字、物件、函式等)。預設為
undefined。 可寫-
當且僅當與屬性關聯的值可以透過賦值運算子更改時為
true。預設為false。
訪問器描述符還包含以下可選鍵
get-
作為屬性的 getter 的函式,或者在沒有 getter 時為
undefined。該函式的返回值將用作屬性的值。預設為undefined。 set-
作為屬性的 setter 的函式,或者在沒有 setter 時為
undefined。該函式將接收新分配給屬性的值作為其唯一引數。預設為undefined。
如果描述符既沒有
value、writable、get鍵,也沒有set鍵,則將其視為資料描述符。如果描述符同時具有value或writable以及get或set鍵,則會丟擲異常。
返回值
傳遞給函式的物件。
示例
使用 Object.defineProperties
js
const obj = {};
Object.defineProperties(obj, {
property1: {
value: true,
writable: true,
},
property2: {
value: "Hello",
writable: false,
},
// etc. etc.
});
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # sec-object.defineproperties |
瀏覽器相容性
載入中…