Javascript Object Prototype Reference

As per my knowledge, the second case below should be true, but in fact it is false. So why is it not true?

Case 1

     var P = function(){};
         P.prototype.get = function(){};

    var p = new P,q = new P;        
    console.log(q.__proto__ === p.__proto__) //true

Case 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

In the first case, P and get() are predefined globals. In the second, they're local to the function that defines PP, hence, a different reference for each instance.

In the top one, you have a new P.

In the second, you have new P in the function and then take new of that function.

This might screw it up.

Nevermind, it's because of the global vars, like he said.

In the first case var p = new P,q = new P; both instantiated the global P and it's prototype so it returns true.

In the second case q and p are both different objects instantiated using new PP which returned different P from inside PP function using return new P. So it returns false.

When you call the PP function you create a new function object each time that is called P. Each one of those functions has a different prototype.