【发布时间】:2013-01-02 16:49:36
【问题描述】:
使用下面的代码,除了手动指定之外,有没有办法只导出名称不以下划线开头的函数和变量?
var myapp = myapp || {};
myapp.utils = (function() {
var
CONSTANT_A = "FOO",
CONSTANT_B = "BAR";
function func() {}
function _privateFunc() {}
return {//return all variables and functions whose name does not have the "_" prefix.}
}());
【问题讨论】:
-
我认为除了
arguments之外,您无法访问当前堆栈帧。如果您按照惯例执行此操作,则可以翻转它,使用名为_的“导出”对象,并通过执行_.func = function() { ... }导出函数 -
您是否考虑过为您希望导出的所有函数和属性设置一个单独的对象?
-
@millimoose - 这是我一直在考虑的另一种方法。这种方法的唯一缺陷是,在访问函数中的变量时,我必须包含命名空间名称(在这种情况下为
_)。前任。在func()中,我必须调用_.CONSTANT_A而不仅仅是CONSTANT_A。不过,这只是一个小麻烦。 -
@kinsho - 你的建议基本上类似于millimoose的。看起来没有办法实现我正在寻找的东西,所以我可能需要接受你/millimoose 的建议。谢谢。
-
为什么不把要导出的函数定义为返回的对象字面量的成员方法??
标签: javascript namespaces javascript-namespaces