Property (プロパティ) (JavaScript)
JavaScript プロパティは、オブジェクトのメンバーであり、キーと値が関連付けられたものです。 JavaScript オブジェクトとは、プロパティの集合を保持するために使用されるデータ構造です。
プロパティは次の部分から構成されます。
- 「名前」(「キー」とも呼ばれる)。これは文字列とシンボルのどちらかです。
- 「値」。これは任意の JavaScript の値です。値として関数を持つプロパティのことを、メソッドとも呼びます。
- 少数の「属性」。これはそのプロパティがどのように読み書きできるかを示すものです。一つのプロパティには
configurable
、enumerable
、writable
の各属性があります。
アクセサープロパティの場合は、実際の「値」を持ちません。値は、読み込む際に呼び出されるゲッターと、値を設定する際に呼び出されるセッターという 2 つの関数を通じて間接的に表されます。しかし、アクセサープロパティではゲッターとセッター関数が自動的に呼び出され、通常はJavaScriptコードに対して透過的であるため、表面上は通常のデータプロパティのように動作します。
プロパティの値(ゲッターとセッターを含む)と属性は、プロパティ記述子と呼ばれるデータレコードに格納されます。 Object.getOwnPropertyDescriptor()
や Object.defineProperty()
など、多くのメソッドがプロパティ記述子を扱います。
「プロパティ」という用語自体は抽象的な概念であり、 JavaScript の値とは関連がありません。例えば、次のコードをご覧ください。
const obj = {
a: 1,
b() {},
};
オブジェクト obj
は 2 つのプロパティを持っています。最初のプロパティは、キーが "a"
、値が 1
です。 2 つ目のプロパティは、キーが "b"
、値が関数(メソッド構文を使用)です。 "a"
が 1
、"b"
が function
という関連付けが、オブジェクトのプロパティです。
クラスの文脈では、プロパティは、各インスタンスが所有するインスタンスプロパティと、クラスが所有し、すべてのインスタンスに共通するデータを保持する静的プロパティに分けることができます。継承の文脈では、プロパティは、オブジェクト自身が所有する所有プロパティと、オブジェクトのプロトタイプチェーン内のオブジェクトが所有する継承プロパティに分けることもできます。
プロパティの読み書きに関する詳細は、オブジェクトでの作業を参照してください。