2012-03-08 29 views
0

我有下面的代碼,你可以看到我手動指定了我想要返回的屬性,我不在乎在這裏有私有/公共函數,所以我想要一個快速的&動態的方式來返回範圍內的所有功能。這可能嗎?我嘗試了一些東西,但有麻煩,它必須在範圍內完成,否則它不能看到功能。如何動態返回範圍內的所有函數?

var MyObj = { 
     (function() { 
      function MyFuncOne() {} 
      function MyFuncTwo() {} 
      return { 
       MyFuncOne: MyFuncOne, 
       MyFuncTwo: MyFuncTwo 
      } 
     })() 
    } 
    var MyObjTwo = { 
     (function() { 
      function MyFuncOne() {} 
      function MyFuncTwo() {} 
      return { 
       MyFuncOne: MyFuncOne, 
       MyFuncTwo: MyFuncTwo 
      } 
     })() 
    } 

僞我想要的代碼:

function ReturnAllProperties() { //foreach func in scope append to list } 

然後在return { ReturnAllProperties(); }

+1

沒有。潛在的重複http://stackoverflow.com/questions/2051678/getting-all-variables-in-scope – max 2012-03-08 01:46:52

+0

「範圍」 - 什麼範圍? – 2012-03-08 01:48:42

+0

自我執行功能 – Baconbeastnz 2012-03-08 01:54:16

回答

0

我想你想一個單身命名空間格局的字裏行間。

var MYNAMESPACE = (function(){ 
    //Private vars 
    var x, y, z; 
    var MyFuncOne = function() {.....} 
    var MyFuncTwo = function() {.....} 
    return { 
     //Here expose functions as privileged methods 
     //You can also expose non-function vars (Numbers, Strings, plain Objects, Arrays) but in general you should expose only methods. 
     MyFuncOne: MyFuncOne, 
     MyFuncTwo: MyFuncTwo 
    }; 
})(); 

按照慣例,命名空間成員是CAPITALIZED。