constructor
正しい関数を指すようにプロパティを修正した場合(つまりB
)
B.prototype.constructor = B;
次に、コンストラクター関数の名前にアクセスできます
this.parentMethod = function() {
alert(this.constructor.name);
}
ただし、これFunction.name
は非標準のプロパティであり、すべてのブラウザーで機能するとは限りません。parentMethod
別の方法として、関数名を使用してインスタンスにプロパティをオーバーライドまたは追加することにより、関数名をハードコーディングすることもできます。this.constructor
達成しようとしていることに応じて、関数参照 ( ) を直接使用することもできます。
継承をセットアップするより良い方法は、Object.create
[MDN]を使用して、子コンストラクター関数で親コンストラクター関数を呼び出すことです。
function A() {}
A.prototype.parentMethod = function() {};
function B() {
A.call(this); // call parent constructor
}
B.prototype = Object.create(A.prototype); // establish inheritance
B.prototype.constructor = B;