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。
...全文
223 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
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();

87,901

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧