使用下面的代碼,除了手動指定外,是否有一種方法只導出名稱不以下劃線開頭的函數和變量?Javascript namespacing - 如何導出基於命名的函數範圍內定義的函數和變量?
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'。如果按照慣例這樣做,可以翻轉它,使用名爲'_'的「exports」對象,並通過執行'_.func = function(){...}來導出函數' – millimoose
您是否考慮過爲希望導出的所有功能和屬性設置單獨的對象? – kinsho
@millimoose - 這是我一直在考慮的另一種方法。這種方法唯一的缺陷是,當訪問函數中的變量時,我必須包含名稱空間名稱(在這種情況下爲'_')。防爆。在'func()'中,我必須調用'_.CONSTANT_A'而不是'CONSTANT_A'。雖然這只是一個小麻煩。 – tamakisquare