【问题标题】:How to make variables with a function javascript?如何使用函数javascript制作变量?
【发布时间】:2015-07-05 15:37:16
【问题描述】:

我从事自动化任务已经有一段时间了,但希望允许用户创建自己的变量是他们的任何方式,例如 a = myname an = GUY (a) = an 这将非常有用,请不要使用字典。和普通变量完全一样!

【问题讨论】:

  • JavaScript 没有动态变量名,除非是全局变量。你可以用eval() 伪造它,但几乎总是有更好的方法,比如使用对象属性而不是变量(这就是为什么全局变量可以是动态的,因为它们可以作为window 的属性访问).
  • 请解释您真正想要解决的问题,因为动态创建全局变量很少是正确的解决方案。如果我们能理解您的实际问题是什么,那么我们可以更好地提供一个好的解决方案。仅供参考,在用您所追求的解决方案而不是实际问题来描述问题时,您会陷入XY Problem,这几乎永远不会为您提供问题的最佳答案。
  • 在下面查看我的答案,这将创建一个普通变量,可以通过其他代码以正常方式访问,即obj.var1
  • 我在this上使用过这个函数,为了更简单的用户参考,我使用了这个函数而不是里面的代码
  • 酷,如果你高兴,你能支持我的回答吗

标签: javascript html automation var


【解决方案1】:

你可以这样做:

function setVariable(varName, value){
  this[varName] = value;
}

这将在窗口对象或函数附加到的对象(调用上下文)上创建一个具有值和名称的变量。

记住对象只是哈希表,你可以像这样获取/设置它们的变量

obj["var1"] = 123;
var var1 = obj["var1"];

所以这取决于您,但您可以使用对象成员名称的字符串名称进行设置。

【讨论】:

  • 注意this也可以通过.bind().call().apply()被其他变量重新绑定。
  • 是的,当然,调用上下文很重要,但这将实现在运行时使用用户输入设置变量的需要。
【解决方案2】:

您的问题缺少很多上下文,但在 javascript 术语中,首先想到的是字典:

// userdictionary = { user => {} }
set_variable(user, variable, value){
    userdictionary[user][variable] = value;
}

get_variable(user,variable){
    return userdictionary[user][variable];
}

【讨论】:

  • 我在示例中确实表明我不会使用字典!
  • 你在我写这篇文章的过程中做出了改变......对不起。为什么不使用字典?
  • 我希望用户创建变量而不是更改字典。
  • 试试我的答案,它会创建变量,而不使用字典
  • 我的意思是编辑我的意思是 a = myname an = GUY (a) = an
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-30
  • 2023-04-11
  • 2016-05-01
相关资源
最近更新 更多