私有变量 很好理解,静态私有变量不好理解,我想了好几天还是没有明白,为什么同一个私有变量会被所有实例共享。我反反复复,依然不能理解。直到,我认真去看这段话之后,才明白的。
这个私有变量被所有实例共享,是两个原因组合在一起导致的。第一个是原型方法会被所以实例共享;第二个是闭包总是保存这对包含作用域的引用。(而原型方法,也就是这里的闭包。)
(function () {
var name = "";
Person = function (value) {
name = value;
};
Person.prototype.getName = function () {
return name;
};
Person.prototype.setName = function (value) {
name = value;
};
})();
var p1 = new Person('tom');
var p2 = new Person('ann');
p1.setName('张飞');
console.log(p1.getName() +" ### "+p2.getName());
输出:
张飞 ### 张飞
现象的确是这个现象,主要是要理解为什么会出现这个现象。原因已经在开头的截图里面展示了。