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

输出:张飞 ### 张飞

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值