Я написал одно, а код делает другое. Вот код, где прототипом является экземпляр другого "класса":
/**
* @constructor
*/
function A() {
this.foo = 'abc';
}
A.prototype.bar = function() {
};
/**
* @constructor
* @inherits A
*/
function B() {
}
// Прототипом для объектов B будет экземпляр A
B.prototype = new A;
Это часто используется, однако свойства, созданные в A, будут в прототипе B, а значит общими для всех экземпляров B. Плюс, вызов конструктора A не всегда требуется.
Вообще же, JS не дает возможности унаследовать свойства. Это можно сделать только через вызов родительского конструктора. А конструктор помимо установки свойств может делать нежелательные действия.