私はこのコードを試しました、私はそれがあなたが望むものだと思います:
function Human(name,age,cars){
Monkey.call(this,name,age);
this.cars = cars;
}
このように、Human
コンストラクターはコンストラクターを通常の関数として呼び出しますMonkey
が、その名前空間を新しいHuman
オブジェクトとして設定します。したがって、この場合、コンストラクターthis
内のキーワードMonkey
はクラスのオブジェクトを参照しますがHuman
、ではありませんMonkey.
。また、このコードでは、コンストラクターを使用するだけで、の新しいインスタンスを返さないため、条件new Human() instanceof Human;
が返されます。true
Monkey
また、あなたが言ったように、あなたはプロトタイプを「クローン」することができます。これを行うだけです:
Human.prototype = Monkey.prototype;
編集
@Bergi amdが提案したように、プロトタイプのクローンを作成する最良の方法は、次のようにObject.createメソッドを使用することです。
Human.prototype = Object.create(Monkey.prototype, {constructor:{value:Human}});