EaselJS: ¿Alguien puede explicar el patrón de herencia utilizado en las demostraciones?

Estoy creando un juego con EaselJS, y me pregunto si alguien puede explicar cómo funciona el patrón de herencia utilizado en los archivos de demostración. Específicamente, estoy mirando el siguiente archivo:https://github.com/CreateJS/EaselJS/blob/master/examples/assets/Ship.js

En la línea 7, el prototipo de la nave se establece en una instancia de uncreatejs.container()...

var p = Ship.prototype = new createjs.Container();

Y luego, en la línea 28, se almacena una referencia al constructor original:

p.Container_initialize = p.initialize;  //unique to avoid overiding base class

Finalmente, elShip objeto se inicializa en la línea 30

p.initialize = function () {
    this.Container_initialize();

Estoy tratando de envolver mi cabeza alrededor de este patrón, porque es diferente a todo lo que he encontrado en el pasado. ¿Alguien me puede explicar por qué querría usar una instancia de una clase como prototipo de una nueva clase? ¿Tal vez solo me señale un enlace con una explicación de este patrón? Cualquier ayuda aquí es muy apreciada ... Me doy cuenta de que esta pregunta es un poco vaga.

Respuestas a la pregunta(1)

Su respuesta a la pregunta