クロージャーの考え方は理解できたと思いますが、次のコードは驚くべき動作をします。
function A(x)
{
this.getX1 = function () { return x; }
A.prototype.getX2 = function () { return x; }
}
var a1 = new A(1);
var a2 = new A(2);
console.log ('a1.getX1()=%d', a1.getX1 ()); // 1
console.log ('a2.getX1()=%d', a2.getX1 ()); // 2
console.log ('a1.getX2()=%d', a1.getX2 ()); // 2 ???
console.log ('a2.getX2()=%d', a2.getX2 ()); // 2
プロトタイプ メソッドがインスタンス メソッドと異なる動作をするかどうかは理解できましたが、これは x が静的変数になっているように見えます。呼び出しの順序を変更しても、結果は変わりません。