Puedo acceder a una variable fácilmente:
function accessVariable(accessFunction, variable) { var namespaces = accessFunction.split("."); for (var b = 0; b < namespaces.length; b++) { if (namespaces[b] != "") { try { variable = variable[namespaces[b]]; } catch { variable = undefined; }; }; return variable; };Pero actualizar esta variable obtenida es algo que no sé cómo hacer.
Es más fácil si usa una función separada para actualizar. Esto puede tomar el nuevo valor como otro argumento.
Luego, detiene la iteración antes del último elemento en el espacio de namespace y lo usa como el índice para asignar.
function updateVariable(accessFunction, variable, value) { var namespaces = accessFunction.split("."); for (var b = 0; b < namespaces.length - 1; b++) { if (namespaces[b] != "") { try { variable = variable[namespaces[b]]; } catch { variable = undefined; } } } if (variable) { variable[namespaces.pop()] = value; } } let obj = {a: {b:[{c: 10}]}}; updateVariable('ab0.c', obj, 20); console.log(obj);Defina una sola variable de alcance global y coloque sus variables allí.
var Glob = {}; // globally scoped object function changeVar(){ Glob.variable1 = 'value1'; } function SeeVar(){ alert(Glob.variable1); // shows 'value1' }