如果我有一个带有公共成员的模块并且我像这样使用它
Module.Sub.member()
那么将成员静态导入本地范围的最佳(如果存在)方法是什么,例如using
在 cpp 或import static
Java 中?
如果我有一个带有公共成员的模块并且我像这样使用它
Module.Sub.member()
那么将成员静态导入本地范围的最佳(如果存在)方法是什么,例如using
在 cpp 或import static
Java 中?
var App = (function(app) {
/* Dependencies */
var Sound = app.Modules.Sound,
Input = app.Modules.IO.Input,
...
/* Actual code using dependecies */
...
})(App || {});
该解决方案有几个优点:
声明在模块的顶部,第一眼就清晰可见(可维护的代码),
导入的通常好处:更少的输入,避免命名空间冲突等(可维护的代码)
长属性路径查找(a.b.c.d
)只需要一次(性能),
使用局部变量更快,使用全局变量 - 更快的查找(性能),
缩小工具可以安全地缩小局部变量名,但不能简单地缩小全局变量。
这是一种我觉得很漂亮的方法,可以指出:
(function(member) {
//Your code here will see member in this scope.
}) (Module.Sub.member);
希望这可以帮助。
就像是
member = Module.Sub.member;
也许?但是要小心,因为它会使全局对象属性变得混乱,甚至可能最终覆盖其中的一些属性,因为您没有“编译单元”的概念,静态导入在 Java 中的作用域。相反,您的 VM 有一个单一的、动态的执行状态,因此上面的建议不是声明性的,而是实现您所追求的目标的必要方式。
据我所知,没有办法以声明的方式实现相同的目标import static
。