我正在通过“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(),还是我错了?
答案 0 :(得分: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;
}
}
在这种方法中,无法从_name
中访问Cat
变量。但是您可以轻松找出一些缺点,即您必须在getter
函数内编写setter
和constructor
方法。花哨的Cat.prototype.someFunc
声明消失了。
在我的实际工作中,我曾经使用javascript工作了2年,我赞成使用领先的_
来告诉别人,这是一个私有变量,因为我是Python的粉丝。 ; - )