我想我已經明白關閉的愛迪,但下面的代碼 表現令人驚訝的對我說:JavaScript的關閉和原型
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已經成爲一個靜態變量。 更改通話順序不會改變結果。
謝謝。這讓我很清楚。 – user1728219
不客氣:) – Peeter