mozilla
Your Search Results

    Object.prototype.constructor

    This article is in need of a technical review.

    This article is in need of an editorial review.

    概要

    インスタンスのプロトタイプをつくったObject関数の参照を返します。ご注意いただきたいのは、このプロパティの値は、関数そのものの参照だということです。関数の名前が含まれた文字列ではありません。1true、あるいは"test"などのプリミティブ値については、このプロパティ値は読み取り専用です。

    説明

    すべてのオブジェクトは、constructorプロパティをprototypeから継承します。

    var o = {};
    o.constructor === Object; // true
    
    var a = [];
    a.constructor === Array; // true
    
    var n = new Number(3);
    n.constructor === Number; // true
    

    例: オブジェクトのコンストラクタを表示する

    つぎの例は、Treeのプロトタイプとその型のオブジェクトtheTreeをつくります。そして、オブジェクトtheTreeconstructorプロパティを表示します。

    function Tree(name) {
      this.name = name;
    }
    
    var theTree = new Tree('Redwood');
    console.log('theTree.constructor is ' + theTree.constructor);
    

    This example displays the following output:

    この例の出力はつぎのとおりです。

    theTree.constructor is function Tree(name) {
      this.name = name;
    }
    

    例: オブジェクトのconstructorを変える

    つぎの例は、一般的なオブジェクトのconstructorの値はどのようにして変えたらよいのかを示します。true1、および"test"だけは、値が読み取り専用のネイティブのため書き替わりません。したがって、constructorプロパティにつねに頼ってよいとはかぎりません。

    function Type () {}
    
    var types = [
      new Array(),
      [],
      new Boolean(),
      true,             // 変わらない
      new Date(),
      new Error(),
      new Function(),
      function () {},
      Math,
      new Number(),
      1,                // 変わらない
      new Object(),
      {},
      new RegExp(),
      /(?:)/,
      new String(),
      'test'            // 変わらない
    ];
    
    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,test
    

    仕様

    仕様 状況 コメント
    ECMAScript 1st Edition. Standard Initial definition. Implemented in JavaScript 1.1.
    ECMAScript 5.1 (ECMA-262)
    The definition of 'Object.prototype.constructor' in that specification.
    Standard  
    ECMAScript 2015 (6th Edition, ECMA-262)
    The definition of 'Object.prototype.constructor' in that specification.
    Standard  

    ブラウザの互換性

    Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Basic support (有) (有) (有) (有) (有)
    Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Basic support (有) (有) (有) (有) (有) (有)

    ドキュメントのタグと貢献者

    Contributors to this page: shide55, FumioNonaka
    最終更新者: shide55,