コンテンツにスキップ

JavaScript/Object/defineProperty

出典: フリー教科書『ウィキブックス(Wikibooks)』

Object.defineProperty() は、指定されたオブジェクトに1つのプロパティを定義または変更するメソッドです。このメソッドは、指定されたオブジェクトを返します[1]

構文

[編集]
Object.defineProperty(obj,prop,descriptor)
  • obj: プロパティを定義または変更する対象のオブジェクト。
  • prop: 定義または変更するプロパティの名前(文字列またはシンボル)。
  • descriptor: プロパティの属性を記述したオブジェクト(value, writable, enumerable, configurable, get, set など)。

[編集]

オブジェクトにプロパティを定義するプログラム

[編集]

以下のプログラムは、Object.defineProperty() を使用してオブジェクトにプロパティを定義します。

constobj={};Object.defineProperty(obj,'property1',{value:42,writable:true,enumerable:true,configurable:true});console.log(obj.property1);// 42obj.property1=100;console.log(obj.property1);// 100

このプログラムでは、Object.defineProperty() を使用して obj オブジェクトに property1 を定義しています。property1 は書き込み可能で列挙可能、設定可能です。

ゲッターとセッターを定義するプログラム

[編集]

以下のプログラムは、Object.defineProperty() を使用してゲッターとセッターを定義します。

constobj={};Object.defineProperty(obj,'property1',{get:function(){returnthis._property1;},set:function(value){this._property1=value;},enumerable:true,configurable:true});obj.property1='Hello';console.log(obj.property1);// Hello

このプログラムでは、Object.defineProperty() を使用して obj オブジェクトに property1 を定義しています。property1 はゲッターとセッターを持つプロパティです。

注意点

[編集]
  • プロパティディスクリプタ: プロパティの属性は、プロパティディスクリプタ(value, writable, enumerable, configurable, get, set など)を含むオブジェクトで定義されます。
  • デフォルト値: プロパティディスクリプタの属性が指定されていない場合、デフォルト値は false または undefined になります。
  • 設定不可プロパティ: configurablefalse に設定されているプロパティは、後から変更または削除することができません。

脚註

[編集]
  1. ^これは、オブジェクトのプロパティを詳細に定義するために使用されます。

外部リンク

[編集]


close