JavaScript/Object/prototype/constructor
Object.prototype.constructor
は、オブジェクトのコンストラクタ関数を参照するプロパティです。このプロパティは、オブジェクトがどのコンストラクタ関数によって作成されたかを示します[1]。
構文
編集obj.constructor
obj
: コンストラクタ関数を参照する対象のオブジェクト。
例
編集オブジェクトのコンストラクタを参照するプログラム
編集以下のプログラムは、Object.prototype.constructor
を使用してオブジェクトのコンストラクタ関数を参照します。
function Person(name) { this.name = name; } const person = new Person('Alice'); console.log(person.constructor); // [Function: Person]
このプログラムでは、Person
コンストラクタ関数を使用して person
オブジェクトを作成しています。person.constructor
は、Person
コンストラクタ関数を参照します。
組み込みオブジェクトのコンストラクタを参照するプログラム
編集以下のプログラムは、Object.prototype.constructor
を使用して組み込みオブジェクトのコンストラクタ関数を参照します。
const arr = [1, 2, 3]; console.log(arr.constructor); // [Function: Array] const num = 42; console.log(num.constructor); // [Function: Number] const str = 'Hello'; console.log(str.constructor); // [Function: String]
このプログラムでは、配列、数値、文字列のコンストラクタ関数を参照しています。それぞれのオブジェクトの constructor
プロパティは、対応する組み込みコンストラクタ関数を参照します。
注意点
編集- プロトタイプチェーン:
constructor
プロパティは、プロトタイプチェーンを通じて継承されます。オブジェクトが独自のconstructor
プロパティを持たない場合、そのプロトタイプのconstructor
プロパティが参照されます。 - 変更可能:
constructor
プロパティは変更可能です。オブジェクトのconstructor
プロパティを変更すると、そのオブジェクトがどのコンストラクタ関数によって作成されたかを誤解する可能性があります。 - プリミティブ値: プリミティブ値(数値、文字列、真偽値など)に対して
constructor
プロパティを参照すると、対応するラッパーオブジェクトのコンストラクタ関数が返されます。
組み込みオブジェクトのコンストラクタ
編集AggregateError.prototype.constructor
:AggregateError
コンストラクタへの参照Array.prototype.constructor
:Array
コンストラクタへの参照ArrayBuffer.prototype.constructor
:ArrayBuffer
コンストラクタへの参照BigInt.prototype.constructor
:BigInt
コンストラクタへの参照BigInt64Array.prototype.constructor
:BigInt64Array
コンストラクタへの参照BigUint64Array.prototype.constructor
:BigUint64Array
コンストラクタへの参照Boolean.prototype.constructor
:Boolean
コンストラクタへの参照DataView.prototype.constructor
:DataView
コンストラクタへの参照Date.prototype.constructor
:Date
コンストラクタへの参照Error.prototype.constructor
:Error
コンストラクタへの参照EvalError.prototype.constructor
:EvalError
コンストラクタへの参照FinalizationRegistry.prototype.constructor
:FinalizationRegistry
コンストラクタへの参照Float16Array.prototype.constructor
:Float16Array
コンストラクタへの参照Float32Array.prototype.constructor
:Float32Array
コンストラクタへの参照Float64Array.prototype.constructor
:Float64Array
コンストラクタへの参照Function.prototype.constructor
:Function
コンストラクタへの参照Int8Array.prototype.constructor
:Int8Array
コンストラクタへの参照Int16Array.prototype.constructor
:Int16Array
コンストラクタへの参照Int32Array.prototype.constructor
:Int32Array
コンストラクタへの参照Iterator.prototype.constructor
:Iterator
コンストラクタへの参照Map.prototype.constructor
:Map
コンストラクタへの参照Number.prototype.constructor
:Number
コンストラクタへの参照Object.prototype.constructor
:Object
コンストラクタへの参照Promise.prototype.constructor
:Promise
コンストラクタへの参照Proxy.prototype.constructor
:Proxy
コンストラクタへの参照RangeError.prototype.constructor
:RangeError
コンストラクタへの参照ReferenceError.prototype.constructor
:ReferenceError
コンストラクタへの参照RegExp.prototype.constructor
:RegExp
コンストラクタへの参照Set.prototype.constructor
:Set
コンストラクタへの参照SharedArrayBuffer.prototype.constructor
:SharedArrayBuffer
コンストラクタへの参照String.prototype.constructor
:String
コンストラクタへの参照Symbol.prototype.constructor
:Symbol
コンストラクタへの参照SyntaxError.prototype.constructor
:SyntaxError
コンストラクタへの参照TypeError.prototype.constructor
:TypeError
コンストラクタへの参照Uint8Array.prototype.constructor
:Uint8Array
コンストラクタへの参照Uint8ClampedArray.prototype.constructor
:Uint8ClampedArray
コンストラクタへの参照Uint16Array.prototype.constructor
:Uint16Array
コンストラクタへの参照Uint32Array.prototype.constructor
:Uint32Array
コンストラクタへの参照URIError.prototype.constructor
:URIError
コンストラクタへの参照WeakMap.prototype.constructor
:WeakMap
コンストラクタへの参照WeakRef.prototype.constructor
:WeakRef
コンストラクタへの参照WeakSet.prototype.constructor
:WeakSet
コンストラクタへの参照
脚註
編集- ^ これは、オブジェクトの生成元を特定するために使用されます。
外部リンク
編集