这里有很多方法。
Javascript 支持可以在代码中的任何位置定义和分配给变量的匿名函数。
因此,您可以编写:
function foo() {
var bar = function() { /* some code */ };
bar();
}
并且bar
不会在其他任何地方可用。这对于封装功能可能很有用,但我认为这不是一个非常可扩展的开发模型。
有一种观点认为,任何只被调用一次的函数在未来都可能成为值得多次调用的东西。在这种情况下,您可以创建“私有”函数:
var Foo = (function() {
var Foo = function() {
/* some constructor code */
};
var private = function() { /* a private function */ };
Foo.prototype.public = function() {
private();
/* And some other stuff */
};
return Foo;
})();
var foo = new Foo();
foo.public(); /* Includes a call to the private method */
在这种情况下,您的private
方法是真正私有的,因此您不必将内部工作原理暴露给世界。
但实际上,这更多的是关于如何实现访问修改的讨论。有很多信息可以回答这个问题。更大的设计问题是是否实现单独的功能,或者是否只是内联它们。
我的选择通常是将有凝聚力的功能块塞进……嗯,塞进函数中。函数调用的成本是非零的,但事后担心......如果您确定函数调用是性能瓶颈,那么您可以担心是否调用过多以及是否应该重构您的代码使用更少的调用。
在那之前,编写你的函数,调用它们并陶醉于清晰的代码。只要确保你使用好的方法名:)