Home > javascript

javascript Archive

Object.prototypeのconstructorプロパティ

constructorプロパティのことを知らなかったのでメモ。

function Hoge() {
    this.piyo = function() {
        console.log('(o e o)/');
    }
}

function Fuga() {
    this.piyo = function() {
        console.log('ピヨピヨ');
    }
}

var hoge = new Hoge();
var fuga = new hoge.constructor();

// (o e o)/
hoge.piyo();
fuga.piyo();

// Hogeオブジェクトの中身
console.log(hoge.constructor.toString());
console.log(fuga.constructor.toString());

// すべてtrue
console.log(hoge.constructor === Hoge);
console.log(hoge.constructor === Hoge.prototype.constructor);
console.log(fuga.constructor === Hoge);
console.log(fuga.constructor === Hoge.prototype.constructor);
console.log(hoge.constructor === fuga.constructor);

// constructorプロパティの上書き
fuga.constructor = Fuga;

var piyo= new fuga.constructor();

// ピヨピヨ
piyo.piyo();

// Fugaオブジェクトの中身
console.log(piyo.constructor.toString());

なるほど、constructorプロパティは上書きできてしまうのですね。

上記URLの内容は、constructorプロパティが実装されたことで、HTMLElement系のコンストラクタ関数を取得することができたってことなのかなー。。

参考にさせていただいたページ

ホーム > javascript

Search

Return to page top