私の知る限り、以下の 2 番目のケースは正しいはずですが、実際には間違っています。では、なぜそれが正しくないのでしょうか。
ケース1
var P = function(){};
P.prototype.get = function(){};
var p = new P,q = new P;
console.log(q.__proto__ === p.__proto__) //true
ケース 2
var PP = function(){
var P = function(){};
P.prototype.get = function(){};
return new P;
};
var p = PP(), q = PP();
console.log(q.__proto__ === p.__proto__) //false