【发布时间】:2012-09-28 11:57:07
【问题描述】:
我以为我已经理解了闭包的概念,但是下面的代码 对我来说表现令人惊讶:
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 已成为一个静态变量。 更改调用顺序不会改变结果。
【问题讨论】:
标签: javascript node.js closures prototype