gpt4 book ai didi

javascript - 动态访问变量

转载 作者:行者123 更新时间:2023-11-28 05:16:31 24 4
gpt4 key购买 nike

假设我正在构建自己的命令行,并且我希望能够访问甚至更改 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);
});

必须有一个解决方案。

最佳答案

为什么不能创建一个商店并使用它?

store.js

// store.js 
module.exports = {}

app.js

// app.js
var store = require('./store');
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':
store.vr = cmd[1];
//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':
store.spit = '...';'
break;
default:
console.log(`${line.trim()}: command not found`);
break;
}
rl.prompt();
}).on('close', () => {
process.exit(0);
});

other.js

// other.js
var store = require('./store');

console.log(store.vr);

虽然您可以使用global,但建议使用此方法,因为您可以轻松模拟商店以进行测试。

关于javascript - 动态访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40941847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com