gpt4 book ai didi

javascript - 如果名称通过 JSON 传递,如何访问内存中的变量?

转载 作者:行者123 更新时间:2023-11-30 08:46:22 25 4
gpt4 key购买 nike

看似简单...

如果在 JavaScript 处理程序中设置它:

 var storage;

稍后我检索了一个 JSON 属性字典,我想在 storage 上设置它。我的字典看起来像这样:

 {
"type": "foo",
"set_on_global": "storage",
"property_dict": {
"some": "thing",
"baz": "bam"
}
}

问题:
有什么方法可以使用 set_on_global 在我的全局 storage 变量上设置 property_dict 对象,例如:

  storage.property_dict = {
"some": "thing",
"baz": "bam"
};

谢谢!

编辑:
storage 不是全局的而是仅保存在内存中时,该怎么做?

解决方案:这就是它的工作原理。它似乎只适用于 setter 方法,例如:

var setter = function (set_on, set) {
switch (set_on) {
case "storage":
storage.property_dict = set;
break;
}

不太喜欢,因为它需要硬编码“存储”,所以也许还有另一种方法。

最佳答案

像这样?您始终可以从窗口对象访问全局变量。

window[json.set_on_global] = json.property_dict;

已编辑 - 已更新以回答后续问题

这取决于您是否有权访问它。假设它是在一个类中定义的,并且是公开的。然后你可以做同样的事情。

obj[json.set_on_global] = json.property_dict;

其中 obj 是该类的一个实例。

如果它是类中的私有(private)变量,那么您需要公开它或使用 setter 来实现这一点。

这就是你要问的,对吧?


已编辑 2

您可以尝试将存储存储在对象中。

var variables = {
storage: {}
};

var setter = function(instruction){
variables[instruction.set_on_global] = instruction.property_dict;
}

另一种方法是只公开变量,这样你就可以像这样(假设这是一个单例):

var Clz = function(){
var storage = {};

return {
storage: storage
}
}();

Clz[json.set_on_global] = json.property_dict;

这应该可以解决您的硬编码问题。我不知道您要创建什么样的类,所以我想我给了您一个单例示例。

关于javascript - 如果名称通过 JSON 传递,如何访问内存中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21694770/

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