0

我正在处理“JavaScript Web 应用程序”,希望附加我创建的类库。这是小提琴http://jsfiddle.net/andrewjmead/gXMp8/。现在它可以工作,但我记得听说最好避免在代码中使用 __proto__。我目前正在使用它来创建函数来操作私有变量。

现在 Cat 类继承自 Animal 类。我想在 cat 的构造函数中添加一个私有变量“name”,然后创建一个 getName 和 setName 来为每个实例操作这个值。

Var tom = Cat("tom");
tom.setName("fud");
tom.getName(); //fud

我应该使用 this.getName() 而不是这个。proto .getName(),还是我完全错了?

4

1 回答 1

1

我认为在 javscript 或 Python 等动态语言中,不需要真正的private变量。当我们说某事private时,我们实际上是在说“如果你不知道自己在做什么,就不要碰这些东西”。所以不要对这private件事太严格。而且,如果你真的想保留一些变量private,我更喜欢使用closure. 这是真正使一些变量的好方法private。例如:

function Cat(name){
    var _name = name;

    this.getName = function(){
        return _name;
    }

    this.setName = function(name){
        _name = name;
    }
}

在这种方法中,没有办法_nameCat. 但是有一些缺点你可以很容易地发现,你必须在函数内部编写你的gettersetter方法constructor。花哨的Cat.prototype.someFunc宣言消失了。

In my real work, I used to work with javascript for 2 years, I am favor of using the leading _ to tell others, this is a private variable, cause I am a Python fan. ;-)

于 2012-07-24T12:56:06.407 回答