javascript:私有变量 (静态私有变量为什么会被所以实例共享?-答疑解惑)

私有变量 很好理解,静态私有变量不好理解,我想了好几天还是没有明白,为什么同一个私有变量会被所有实例共享。我反反复复,依然不能理解。直到,我认真去看这段话之后,才明白的。
《JavaScript高级程序设计-静态私有变量》

这个私有变量被所有实例共享,是两个原因组合在一起导致的。第一个是原型方法会被所以实例共享;第二个是闭包总是保存这对包含作用域的引用。(而原型方法,也就是这里的闭包。)

(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());

输出:张飞 ### 张飞

现象的确是这个现象,主要是要理解为什么会出现这个现象。原因已经在开头的截图里面展示了。

猜你喜欢

转载自blog.csdn.net/ducklikejava/article/details/80168115
今日推荐