→
指定したオブジェクトのすべてのプロパティ記述子を返します。
| obj | すべてのプロパティ ディスクリプタを取得するオブジェクト。 |
|---|
オブジェクトのすべてのプロパティ記述子を含むオブジェクト。プロパティがない場合、空オブジェクトの可能性がある。
このメソッドは、オブジェクトのすべての独自のプロパティの正確な記述の検査を可能にします。JavaScript では、プロパティは文字列値による名前または Symbol とプロパティ記述子で構成されています。プロパティ記述子の型と属性についての詳細情報は、 で確認してください。
プロパティ ディスクリプタ は、次の属性のいくつかを持ちます:
| value | プロパティに関連づけられた値です(データ ディスクリプタのみ)。 |
|---|---|
| writable | true である場合、プロパティに関連づけられた値は変更することができます(データ記述子のみ)。 |
| get | プロパティのゲッターとして提供する関数、あるいはゲッターがない場合は undefined です(アクセサ記述子のみ)。 |
| set | プロパティのセッターとして提供する関数、あるいはセッターがない場合は undefined です(アクセサ記述子のみ)。 |
| configurable | true である場合、この種の記述子を変更することや、対応するオブジェクトからプロパティを削除することができます。 |
| enumerable | true である場合、このプロパティは対応するオブジェクトでのプロパティ列挙に現れます。 |
Object.assign() メソッドは、ソースオブジェクトから対象のオブジェクトに対して enumerable とプロパティのみコピーできる一方、2 つの未知のオブジェクト間の浅いコピーのために、このメソッドと Object.create() を使用できます:
Object.create( Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj) );
サブクラスを作成する通常の方法は、サブクラスを定義し、そのプロトタイプをスーパー クラスのインスタンスに設定し、そのインスタンスにプロパティを定義することです。これは特にセッターやゲッターが無骨になることがあります。代わりに、プロトタイプを設定するためにこのコードを使用することもできます。
function superclass() {}
superclass.prototype = {
// ここでメソッドとプロパティを定義します
};
function subclass() {}
subclass.prototype = Object.create(
superclass.prototype,
{
// ここでメソッドとプロパティを定義します
}
);