2017-08-12 32 views
0

我有一個函數,它有一些變量,因爲它們在函數內部,它們是局部函數,因此是私有的。現在我可能有很多這樣的變量,爲了設置一個值並從外部獲取變量值,我必須編寫set並獲取每個私有變量。 反正在javascript中有獲取和設置所有私有變量(PrivateOne和PrivateTwo)的常用功能。實現一個函數來設置並獲取JavaScript中的所有私有變量的值

 privateClosure = (function(){ 
     var PrivateOne; 
     var PrivateTwo; 
     setPrivate = function(VariableName,Value) 
     { 
     VariableName = Value; 
     } 
     getPrivate = function(VariableName) 
     { 
     return VariableName; 
     } 
     return{setPrivate,getPrivate}; 
     })(); 
     // I want to do something like this 
     privateClosure.setPrivate(PrivateOne,10); 
     privateClosure.getPrivate(PrivateOne); 
     privateClosure.setPrivate(PrivateTwo,20); 
     privateClosure.getPrivate(PrivateTwo); 
     //Only one Function for all the private variable in closure. 



    Is there anyway in javascript to have common function for getting and setting all private variable(PrivateOne and PrivateTwo). 
+1

從你的問題中不清楚你到底想要完成什麼。 –

+0

@TanveerBadar我已經更新了問題的背景。 –

回答

1

,你可以關閉一個地圖:

var data = (function(){ 
    var lookup = new Map(); 

    return { 
    get(v){ 
     return lookup.get(v); 
     }, 
     set(a,v){ 
     return lookup.set(a,v); 
     } 
    } 
})(); 

所以,你可以這樣做:

data.set("a",1); 
alert(data.get("a")); 
0

肯定有:eval做你想要的一切。

const privateVars = (function(){ 
    var privateOne; 
    var privateTwo; 
    return { 
     setPrivate(variableName, value) { 
      eval(`(v) => { ${variableName} = v; }`)(value); 
     }, 
     getPrivate(variableName) { 
      return eval(variableName); 
     }; 
    } 
}()); 

1:......是的,當然,totally unreasonable。不要使用這個。


但是,如果你想要的東西了

獲取和設置所有的私有變量

我不知道爲什麼他們是私人所有,你不只是使用一個對象與公共財產。

相關問題