क्या गतिशील रूप से निजी चरों तक पहुंचने वाले मॉड्यूल-पैटर्न से सार्वजनिक फ़ंक्शन करने का कोई तरीका है? test1 चलता रहा "गतिशील पहुँच" के साथ लेकिन सार्वजनिक चरगतिशील रूप से मॉड्यूल पैटर्न में निजी चर का उपयोग करना संभव है?
var x = (function(){
var x=0, y=2, z=5;
return {
toast: 123,
test1: function(arg){
return this[arg];
},
test2: function(){
// ??
}
};
}());
console.log(x.test1("toast")); // 123
console.log(x.test2("y")); // should return 2
मैं एक ही निजी चर (एक वस्तु) बनाने के मेरे निजी चर संग्रहीत करें ताकि मैं उन्हें कि
की तरह उपयोग करने में सक्षम था के साथ समाप्त हो गया साथ क्या मतलबprivateVarStore[privateVarName]
लेकिन क्या इसके लिए कोई और समाधान है?
पर सुरक्षा समस्याओं से बचने के लिए सलाह दी जाएगी कि सत्यापन 2 में पैरामीटर वास्तव में एक साधारण चर है: वापसी/^ [$ _ ए-जेड] [$ _ ए-जे 0-9] * $/i.test (ए)? eval (ए): अपरिभाषित; – HBP
@ हंसबपुफल: बढ़िया विचार! मैं इसे – qwertymk
+1 जोड़ना सुनिश्चित करूँगा, लेकिन क्या मैं एक वैकल्पिक सत्यापन विचार सुझा सकता हूं: यदि आप किसी ऑब्जेक्ट को परिभाषित करते हैं जो सूचीबद्ध करता है कि सार्वजनिक चर के माध्यम से कौन से निजी चर का उपयोग किया जा सकता है, जैसे 'var accessList = {" x " : सच, "वाई": सच}; फिर 'फ़ंक्शन टेस्ट 2 (ए)' में आप 'रिटर्न एक्सेसलिस्ट [ए] कह सकते हैं? eval (ए): अपरिभाषित; '- लाभ यह है कि न केवल यह सुरक्षा प्रदान करता है कि कौन से तारों को निकालने के लिए पारित किया जा सकता है, यह आपको अन्य सचमुच निजी चर परिभाषित करने की अनुमति देता है जिसे 'test2()' । – nnnnnn