0

What is the point of making values private versus public? It seems like it's just more work on my part... (this is assuming i'm the only one who will ever use these functions...)

Is there some sort of security concern with this?

function att1() {
    this.value = "";
}

function att2() {
    var _value = "";
    this.setValue = function(val){_value=val;}
    this.getValue = function(){return _value;}
}
4

3 回答 3

5

私有变量很有用,因为它可以确保您不会通过在代码的其他地方修改它们来破坏程序的功能。

例如,假设您有一个变量 HP,它代表您在游戏中的生命值。你不希望它低于零。

如果您只是将该字段公开

var hp;

那么您可以轻松地创建一个功能,将您的 HP 降低到零以下;

hp = 100;
hp -= 200;

但是通过将字段“隐藏”为私有 int,您现在可以编写正确调整 hp 的方法:

function setHP(newHP)
{
    if (newHP < 0)
        newHP = 0;
    hp = newHP;
}

这意味着您不能再“破坏”代码中的变量(至少,不能在您定义它的类之外!)

于 2013-10-31T13:53:55.883 回答
2

私有变量的 setter 和 getter 很有用,因为它们允许您限制对变量的直接访问并执行一些您想要分配的值的检查。例如,您有一个必须为正的变量。您可以提供对它的直接访问 - 它不会给您任何保证改变其值的每段代码都会将其设置为正值。更好的解决方案是提供一个setter函数来检查它的参数,如果它是负数,则保留变量的旧值(例如),并写一些东西来记录。

于 2013-10-31T13:55:38.223 回答
0

根据我的经验,为变量设置 getter 和 setter 很有用。它允许轻松调试 get/set 操作,只需在 setter 中设置断点并查看对象状态何时以及由谁更改。无法告诉你这为我节省了多少头痛。

此外,您可能不想向所有人公开所有对象状态。

于 2013-10-31T13:57:00.687 回答