作为一名 C# 程序员,我有一个习惯,将可以而且应该私有的东西设为私有,当 JS 类型向我公开其所有私有部分时,我总是有一种奇怪的感觉(而且这种感觉并没有被“唤起”) )。假设我有一个类型draw
方法,内部调用drawBackground
and drawForeground
,单独调用它们是没有意义的。我应该如何实施这个?
Option 1
Foo = function(){
this.draw();
};
Foo.prototype.draw = function(){
this.drawBackground();
this.drawForeground();
};
Foo.prototype.drawBackground = function(){};
Foo.prototype.drawForeground = function(){};
Option 2
Foo = (function(){
var constructor = function(){
this.draw();
};
var drawBackground = function(){};
var drawForeground = function(){};
constructor.prototype.draw = function(){
drawBackground.call(this);
drawForeground.call(this);
};
return constructor;
})();
当然,区别在于,在第一个示例中,drawBackground
and drawForeground
方法是公共 API 的一部分,而它们在第二个 API 中对外部隐藏。这是可取的吗?我应该更喜欢哪一个?我将 C# 习惯应用于 Javascript 是错误的吗?我应该让 Javascript 中的所有内容都可扩展和可覆盖吗?对性能有何影响.call(this)
?
Perl 开发人员中有一句广为人知的名言,出自著名的 Camel 书:“Perl 模块宁愿你远离它的客厅,因为你没有被邀请,而不是因为它有一把猎枪。”。其理念是,如果您作为库的开发人员想要区分公共 API 和私有 API,那就太好了。这样做并记录下来。代码的调用者应该知道哪个是哪个,但如果他们决定调用您认为他们不应该调用的东西,也可以自由地表现得像个白痴。从面向对象的背景来看,这是异端邪说,但对于脚本语言来说,这就是它们的运作方式。
这个问题的答案有点主观,但我会告诉你,当我编写 JavaScript 并拥有私有的方法或变量(如果我在 .NET 中进行编码)时,我只需在它们前面加上“prv_”或“prv_”之类的前缀。 “p_”或只是“_”...无论你的船漂浮什么。这样,您就告诉您的用户,这些内容是私有的,并且可以在他们的控制下进行更改。这样,如果他们无论如何都选择调用您的私有方法,那么可疑的代码就会像一个酸痛的拇指一样突出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)