/

JavaScript 屬性描述符

JavaScript 屬性描述符

解釋了屬性描述符以及它們的用途

在 JavaScript 中,任何物件都有一組屬性,而每個屬性都有一個 描述符

這個描述符是一個物件,它定義了屬性的行為和自身屬性。

許多 Object 靜態方法與之相互作用。這些方法包括:

以下是一個屬性描述符物件的例子:

1
2
3
{
value: 'Something'
}

這是最簡單的描述符物件。value 是屬性的值,在鍵值定義中使用。這個 key 是在物件中定義此屬性時所使用的鍵:

1
2
3
4
5
{
breed: {
value: 'Siberian Husky'
}
}

示例:

1
2
3
4
5
6
7
const animal = {}
const dog = Object.create(animal, {
breed: {
value: 'Siberian Husky'
}
});
console.log(dog.breed) //'Siberian Husky'

您可以為每個不同的物件屬性傳遞其他屬性:

  • value:屬性的值
  • writable:若為 true,則該屬性可以被更改
  • configurable:若為 false,則該屬性無法被移除,也無法更改任何屬性,除非它的值
  • enumerable:若為 true,則該屬性是可枚舉的
  • get:屬性的 getter 函式,在讀取屬性時呼叫
  • set:屬性的 setter 函式,在變更屬性值時呼叫

writableconfigurableenumerable 設定該屬性的行為。它們的值是布林值,默認情況下都是 false

示例:

1
2
3
4
5
6
7
8
9
const animal = {}
const dog = Object.create(animal, {
breed: {
value: 'Siberian Husky',
writable: false
}
});
console.log(dog.breed) //'Siberian Husky'
dog.breed = 'Pug' //TypeError: Cannot assign to read only property 'breed' of object '#<Object>'

tags: [“JavaScript”, “Object”, “property descriptors”, “Object.create()”, “Object.defineProperties()”, “Object.defineProperty()”, “Object.getOwnPropertyDescriptor()”, “Object.getOwnPropertyDescriptors”]