¿Por qué no usaría Child.prototype = Parent.Prototype en lugar de Child.prototype = new Parent (); para la herencia de Javascript?

No comprendo este comportamiento en javascript para herencia. Siempre lo he visto definido así:

function GameObject(oImg, x, y) {

    this.x = x;
    this.y = y;
    this.img = oImg;

    this.hit = new Object();
    this.hitBox.x = x;
    this.hitBox.y = y;
    this.hitBox.width = oImg.width;
    this.hitBox.height = oImg.height;

}

Spaceship.prototype = new GameObject();
Spaceship.prototype.constructor = Spaceship;

function Spaceship(){
    console.log("instantiate ship");
    GameObject.apply(this, arguments);
    this.vx = 0;
    this.vy = 0;
    this.speed = 3;
    this.friction = 0.94;
}

Pero en mi caso, estas líneas:

    this.hitBox.width = oImg.width;
    this.hitBox.height = oImg.height;

Cuando hago una console.log (esto) en mi constructor de Spaceship, puedo ver que elproto La propiedad se establece en Spaceship en lugar de GameObject, si los elimino, se establece en GameObject.

Y si uso:

 Spaceship.prototype = GameObject.prototype;

No tengo más problemas con eso. La razón por la que esto me bloquea es que tengo otro objeto con un método add () y comprueba que el objeto no se ejecute en GameObject con este código:

 if(object instanceof GameObject)

No entiendo qué pueden cambiar esas dos líneas, por lo que la herencia se rompe cuando están presentes y no estoy seguro de que hacer la herencia de la segunda manera sea bueno. ¿Podría alguien aclararme sobre esto por favor? :)

Respuestas a la pregunta(3)

Su respuesta a la pregunta