tam*_*are 3 javascript namespaces javascript-namespaces
使用下面的代码,除了手动指定之外,有没有办法只导出名称不以下划线开头的函数和变量?
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.}
}());
Run Code Online (Sandbox Code Playgroud)
您的想法需要能够列出本地范围内的所有变量.不幸的是,JavaScript无法做到这一点.看到这个相关的问题.
我已经看到过两种方法:
1)将每个变量定义到要导出的对象时附加:
var myapp = myapp || {};
myapp.utils = (function () {
var exports = {};
exports.CONSTANT_A = "FOO",
exports.CONSTANT_B = "BAR";
exports.func = function func() {}
function _privateFunc() {}
return exports;
}());
Run Code Online (Sandbox Code Playgroud)
2)或者在对象文字中列出最后的所有导出:
var myapp = myapp || {};
myapp.utils = (function () {
var
CONSTANT_A = "FOO",
CONSTANT_B = "BAR";
function func() {}
function _privateFunc() {}
return {
CONSTANT_A: CONSTANT_A,
CONSTANT_B: CONSTANT_B,
func: func
};
}());
Run Code Online (Sandbox Code Playgroud)
我已经看到了两种(甚至是两种混合物)在实践中使用过.第二个看起来可能更迂腐,但也允许读者查看单个代码段并查看该函数返回的整个界面.
| 归档时间: |
|
| 查看次数: |
3588 次 |
| 最近记录: |