将价值观私有化与公众化有什么关系?看起来这只是我的工作......(假设我是唯一一个会使用这些功能的人......)
这有什么安全问题吗?
function att1() {
this.value = "";
}
function att2() {
var _value = "";
this.setValue = function(val){_value=val;}
this.getValue = function(){return _value;}
}
答案 0 :(得分:5)
私有变量非常有用,它可以确保您不会通过在代码中的其他位置修改程序来破坏程序的功能。
例如,假设您有一个变量HP代表游戏中的生命值。你不希望它低于零。
如果您只是将该字段公开
var hp;
然后您可以轻松地创建一个将HP降低到零以下的功能;
hp = 100;
hp -= 200;
但是通过将字段“隐藏”为私有int,您现在可以编写适当调整hp的方法:
function setHP(newHP)
{
if (newHP < 0)
newHP = 0;
hp = newHP;
}
意味着您不能再“破坏”代码中的变量(至少不在您定义的类之外!)
答案 1 :(得分:2)
私有变量的setter和getter非常有用,因为它们允许您限制对变量的直接访问,并对要分配的值执行一些检查。例如,您有一个具有的变量为正数。您可以直接访问它 - 它不会保证每一段更改其值的代码都会将其设置为正值。更好的解决方案是提供一个setter
函数来检查它的参数,如果它是负数,则保留变量的旧值(例如),并写入一些内容进行记录。
答案 2 :(得分:0)
根据我的经验,为变量设置getter和setter是很有用的。它允许轻松调试get / set操作,只需在setter中设置断点,并查看对象状态何时以及由谁改变。不能告诉你这让我有多少头痛。
此外,您可能不希望向所有人公开所有对象状态。