假设我正在构建自己的命令行,并且希望能够访问甚至更改任何通常在NodeJS中定义的变量。我将在另一个变量中定义变量的名称,该变量将被称为cmd[1]
。经过适当的时间研究后,我得出的结论是,没有全局对象包含所有已定义的变量。如何返回另一个变量中描述的变量的数据?这里是一个小代码块,解释我想要实现的内容:动态访问变量
var readline = require('readline');
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
prompt: 'CMD> '
});
rl.prompt();
rl.on('line', (line) => {
var commandl = line.trim();
var cmd = commandl.split(' ');
switch(cmd[0]) {
case 'vr':
//here i'd like to log the variable which name is in cmd[1]. if there was a global object i would assume i could just global[cmd[1]].
break;
case 'spit':
//here i'd like to log an object with every defined variables and its live changes
break;
default:
console.log(`${line.trim()}: command not found`);
break;
}
rl.prompt();
}).on('close',() => {
process.exit(0);
});
有一定的解决方案。
这不适用于脚本,只适用于REPL。 – Monstrum
Hrm。这很奇怪,我以为我曾经用过(现在我只是测试它,它不起作用) – MayorMonty
我读到,如果我只是定义变量没有'var'('variable = 123'),那么它会显示在全球('全球['变量']'),但我不知道这是多么可靠,它是多么不同'var'。 – Monstrum