Wenn Sie globale Funktionen und Variable verwenden möchten, dynamisch können Sie:Wie kann ich den lokalen Bereich dynamisch in Javascript zugreifen?
window[functionName](window[varName]);
Ist es möglich, die gleiche Sache für Variablen im lokalen Bereich zu tun?
Dieser Code funktioniert korrekt, aber derzeit verwendet Eval und ich versuche, darüber nachzudenken, wie es sonst geht.
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]
Ich verstehe, warum ich jetzt verwirrt war, weil Sie die Variablen abc sowie die Namen für die Rückkehr benennen. Du solltest diese Namen ändern, das hat mich verwirrt. Wie auch immer, bessere Antworten als meine sind aufgetaucht, also werde ich mich jetzt nur noch an Crescentfresh halten. –
@Gothdo Die Frage, die Sie verlinken, fragt etwas anderes. Die Variablen, auf die er zuzugreifen versucht, sind globale Variablen. Die akzeptierte Antwort verwendet auch globale Variablen. Die verknüpfte Frage sollte geändert werden. – Annan