KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
If you want to use global functions and variable dynamically you can use: window[functionName](window[varName]); Is it possible to do the same thing for variables in the local scope? This code works correctly but currently uses eval and I'm trying to think of how else to do it. var test = function(){ //this = window var a, b, c; //private variables var prop = function(name, def){ //this = window eval(name+ ' = ' + (def.toSource() || undefined) + ';'); return function(value){ //this = test object if ( !value) { return eval('(' + name + ')'); } eval(name + ' = value;') return this; }; }; return { a:prop('a', 1), b:prop('b', 2), c:prop('c', 3), d:function(){ //to show that they are accessible via to methods return [a,b,c]; } }; }(); >>>test Object >>>test.prop undefined >>>test.a function() >>>test.a() 1 //returns the default >>>test.a(123) Object //returns the object >>>test.a() 123 //returns the changed private variable >>>test.d() [123,2,3]
Tags (comma-separated)
Save Edits
Cancel