1
次のコードは、a、c、cの2つの関数がaから継承しています。次のようにjavascript util.inherits派生クラス関数を呼び出す際に問題が発生しました
function a(){
console.log("constructor-a");
}
a.prototype.fun1 = function(){
console.log("a-fun1");
}
a.prototype.fun2 = function(){
console.log("a-fun2");
}
function c(){
c.super_.call(this)
console.log("constructor-c");
}
c.prototype.fun5 = function(){
console.log("c-fun1");
}
c.prototype.fun6 = function(){
console.log("c-fun2");
}
util.inherits(c,a);
var X = new c();
console.log("X instanceof a", X instanceof a);
console.log("X instanceof a", X instanceof c);
Cから継承されるので、Cとの両方の機能がCのオブジェクトから実行可能であるべきであるが、しかし、この場合、出力は次のとおり
X.fun1() --> a-fun1
X.fun2() --> a-fun2
X.fun5() --> TypeError: X.fun5 is not a function
X.fun6() --> TypeError: X.fun6 is not a function
プロトタイプへの割り当ての前に 'util.inherits'を呼び出す必要があります。 – Bergi