.prototype.constructor
インスタンスのプロトタイプを作成したオブジェクトの関数への参照を返します。
このプロパティの値は関数自身への参照であり、関数の名前を含む文字列では無いことに注意してください。
この値は、1
、true
、"test"
のようなプリミティブ値では、読み込み専用のみになります。
説明
全てのオブジェクトはconstructor
プロパティを、それらのprototype
から継承します。
var o = {};
o.constructor === Object; // true
var a = [];
a.constructor === Array; // true
var n = new Number(3);
n.constructor === Number; // true
例
例: オブジェクトのconstructorを表示
下記の例はTreeのprototypeと、その型のオブジェクトであるtheTreeを作成し、 次にtheTreeのオブジェクトのconstructorプロパティを表示しています。
function Tree (name) {
this.name = name;
}
var theTree = new Tree( "Redwood" );
console.log( "theTree.constructor is " + theTree.constructor );
この例は次のように出力されます。
theTree.constructor is function Tree (name) {
this.name = name;
}
例: オブジェクトのconstructorを変更
下記の例は一般的なオブジェクトのconstructorの値の変更方法を示しています。 true、1、"test"のようなプリミティブ値は、読み込み専用のネイティブconstructorを持つとして影響を受けることはありません。 この例は、オブジェクトのconstructorプロパティを当てにすることが、常に安全というわけでは無いことを示しています。
function Type () {}
var types = [
new Array(),
[],
new Boolean(),
true, // remains unchanged
new Date(),
new Error(),
new Function(),
function () {},
Math,
new Number(),
1, // remains unchanged
new Object(),
{},
new RegExp(),
/(?:)/,
new String(),
"test" // remains unchanged
];
for( var i = 0; i < types.length; i++ ) {
types[i].constructor = Type;
types[i] = [ types[i].constructor, types[i] instanceof Type, types[i].toString() ];
}
console.log( types.join( "\n" ) );
これは、次のように出力されます。
function Type() {},false,
function Type() {},false,
function Type() {},false,false
function Boolean() {
[native code]
},false,true
function Type() {},false,Mon Sep 01 2014 16:03:49 GMT+0600
function Type() {},false,Error
function Type() {},false,function anonymous() {
}
function Type() {},false,function () {}
function Type() {},false,[object Math]
function Type() {},false,0
function Number() {
[native code]
},false,1
function Type() {},false,[object Object]
function Type() {},false,[object Object]
function Type() {},false,/(?:)/
function Type() {},false,/(?:)/
function Type() {},false,
function String() {
[native code]
},false,тест
仕様
ブラウザ互換性
機能 | Chrome | Firefox (Gecko) |
IE | Opera | Safari |
---|---|---|---|---|---|
基本 | ◯ | ◯ | ◯ | ◯ | ◯ |
機能 | Android | Chrome for Android |
Firefox Mobile |
IE Mobile |
Opera Mobile |
Safari Mobile |
---|---|---|---|---|---|---|
基本 | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ |
© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。
- 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
- 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
- MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。