JS类,私有变量为什么在两个对象中,初始化时设置不同值,当通过对象访问时,值会一样。

qingchuanE 2017-11-16 06:00:00
麻烦有懂的同学指教,谢谢。
直接上测试代码

var ClassTest = function(p1){
var value = 0;
if (p1 != undefined){
value = p1;
}

if (ClassTest.prototype.read == undefined){
ClassTest.prototype.read = function(){
return value;
}
}
};
test1 = new ClassTest(10);
test2 = new ClassTest(20);
value1 = test1.read();
value2 = test2.read();

value1和value2都是10。
...全文
145 4 点赞 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qingchuanE 2017-11-17
再次感谢。
  • 打赏
  • 举报
回复
天际的海浪 2017-11-16
引用 2 楼 qingchuanE 的回复:
非常感谢,你的方法可以解决。 多问下,ClassTest.prototype.read 这样定义的是类函数吗?这个函数不建议访问私有变量吗。
ClassTest.prototype.read是在类的原型对象上设置方法。是所有实例对象共用的。但方法函数只有一个,只是处在一个闭包环境中,只能访问这一个闭包内的私有变量
  • 打赏
  • 举报
回复
qingchuanE 2017-11-16
非常感谢,你的方法可以解决。 多问下,ClassTest.prototype.read 这样定义的是类函数吗?这个函数不建议访问私有变量吗。
  • 打赏
  • 举报
回复
天际的海浪 2017-11-16
要设置每个对象自己的方法才能访问自己的私有变量,

   var ClassTest = function(p1){
        var value = 0;
        if (p1 != undefined){
            value = p1;
        }

        this.read = function(){
            return value;
        }
    };
    test1 = new ClassTest(10);
    test2 = new ClassTest(20);
    value1 = test1.read();
    value2 = test2.read();
  • 打赏
  • 举报
回复
相关推荐
发帖
JavaScript
加入

8.5w+

社区成员

Web 开发 JavaScript
申请成为版主
帖子事件
创建了帖子
2017-11-16 06:00
社区公告
暂无公告