Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于javascript中的对象值声明变量_Javascript_Variables_Object - Fatal编程技术网

基于javascript中的对象值声明变量

基于javascript中的对象值声明变量,javascript,variables,object,Javascript,Variables,Object,我今天遇到了一个简单的问题,似乎找不到解决的办法,不管解决的办法是什么,这是我从未学过的东西,所以让我感到困惑 出于我不想讨论的原因,我需要从对象中获取一个值,并将其用作新变量的名称。将循环通过一吨这样需要重复。例如,从这样一个对象 obj = { "name": "object101" }; 我想从中得到的是一个var声明,object101是新var的名称 "var object101 = // stuff" 但是“var obj.name=//stuff”不起作用,点似乎

我今天遇到了一个简单的问题,似乎找不到解决的办法,不管解决的办法是什么,这是我从未学过的东西,所以让我感到困惑

出于我不想讨论的原因,我需要从对象中获取一个值,并将其用作新变量的名称。将循环通过一吨这样需要重复。例如,从这样一个对象

obj = {
    "name": "object101"
};
我想从中得到的是一个var声明,object101是新var的名称

"var object101 =  // stuff" 

但是
“var obj.name=//stuff”
不起作用,点似乎无效

我还尝试将object101放入它自己的变量中,比如,
var name=obj.name

它可以很好地保存内容。但随后我立即看到了使用,
var name=//stuff

它只是重新定义了“名称”,并没有放置名称的内容。在控制台日志中,如
console.log(“var”+name+“=stuff”)
这正是我希望它写入代码的方式,但是在实际代码中存在这个问题,在这种情况下重新定义了var

因此,我觉得在如何提供声明变量的名称方面,我缺少了一些非常基本的东西。可能我缺少了一些非常简单的语法,或者可能有一个基于其他对象动态创建变量声明名称的过程。我已经完成了js的大部分工作,从未见过
var[复杂的语法导致name]=
,它总是非常简单


但到目前为止,我的研究在这个问题上还是一片空白。有谁能启发我吗?

好吧,为了科学的利益:

(function() {
  var dynaVarName = 'testName';
  eval('var ' + dynaVarName + ';');
  eval(dynaVarName + ' = 5;');
  eval('console.log(' + dynaVarName + ');');  // => 5
}());

testName // => ReferenceError

是的,你可以创建一个基于表达式的局部变量。但我无法想象这样做的好处。

好吧,为了科学的利益:

(function() {
  var dynaVarName = 'testName';
  eval('var ' + dynaVarName + ';');
  eval(dynaVarName + ' = 5;');
  eval('console.log(' + dynaVarName + ');');  // => 5
}());

testName // => ReferenceError

是的,你可以创建一个基于表达式的局部变量。但我无法想象这样做的好处。

好吧,为了科学的利益:

(function() {
  var dynaVarName = 'testName';
  eval('var ' + dynaVarName + ';');
  eval(dynaVarName + ' = 5;');
  eval('console.log(' + dynaVarName + ');');  // => 5
}());

testName // => ReferenceError

是的,你可以创建一个基于表达式的局部变量。但我无法想象这样做的好处。

好吧,为了科学的利益:

(function() {
  var dynaVarName = 'testName';
  eval('var ' + dynaVarName + ';');
  eval(dynaVarName + ' = 5;');
  eval('console.log(' + dynaVarName + ');');  // => 5
}());

testName // => ReferenceError
是的,你可以创建一个基于表达式的局部变量。但我无法想象这样做的好处。

哇,你真的不想做你认为你想做的事,但事情就这样发生了

如果您在浏览器中操作,并且希望变量位于全局范围内,幸运的是全局范围有一个名称:
window

您可以这样做:

window[obj.name] = 'stuff';
如果您希望它位于本地范围内,则可以将几乎禁止的关键字
一起使用:

var f = function(obj, b) {
  var fake_scope = {};
  with (fake_scope) {
    fake_scope[obj.name] = b;
    console.log(d);
  }
}

f( { name : 'd' } , 3 )
将打印出3

如果您需要本地作用域,并且不想将
一起使用,则必须使用
eval
进行操作

但说真的,如果你这么做,。

哇,你真的不想做你认为你想做的事,但事情就这样发生了

如果您在浏览器中操作,并且希望变量位于全局范围内,幸运的是全局范围有一个名称:
window

您可以这样做:

window[obj.name] = 'stuff';
如果您希望它位于本地范围内,则可以将几乎禁止的关键字
一起使用:

var f = function(obj, b) {
  var fake_scope = {};
  with (fake_scope) {
    fake_scope[obj.name] = b;
    console.log(d);
  }
}

f( { name : 'd' } , 3 )
将打印出3

如果您需要本地作用域,并且不想将
一起使用,则必须使用
eval
进行操作

但说真的,如果你这么做,。

哇,你真的不想做你认为你想做的事,但事情就这样发生了

如果您在浏览器中操作,并且希望变量位于全局范围内,幸运的是全局范围有一个名称:
window

您可以这样做:

window[obj.name] = 'stuff';
如果您希望它位于本地范围内,则可以将几乎禁止的关键字
一起使用:

var f = function(obj, b) {
  var fake_scope = {};
  with (fake_scope) {
    fake_scope[obj.name] = b;
    console.log(d);
  }
}

f( { name : 'd' } , 3 )
将打印出3

如果您需要本地作用域,并且不想将
一起使用,则必须使用
eval
进行操作

但说真的,如果你这么做,。

哇,你真的不想做你认为你想做的事,但事情就这样发生了

如果您在浏览器中操作,并且希望变量位于全局范围内,幸运的是全局范围有一个名称:
window

您可以这样做:

window[obj.name] = 'stuff';
如果您希望它位于本地范围内,则可以将几乎禁止的关键字
一起使用:

var f = function(obj, b) {
  var fake_scope = {};
  with (fake_scope) {
    fake_scope[obj.name] = b;
    console.log(d);
  }
}

f( { name : 'd' } , 3 )
将打印出3

如果您需要本地作用域,并且不想将
一起使用,则必须使用
eval
进行操作


但说真的,如果你这样做,.

听起来像是XY问题。有一个原因你从未见过这种语法,因为它不存在。。。你为什么要这样做?也许我们可以帮你找到解决实际问题的方法。听起来像是XY问题。有一个原因你从未见过这种语法,因为它不存在。。。你为什么要这样做?也许我们可以帮你找到解决实际问题的方法。听起来像是XY问题。有一个原因你从未见过这种语法,因为它不存在。。。你为什么要这样做?也许我们可以帮你找到解决实际问题的方法。听起来像是XY问题。有一个原因你从未见过这种语法,因为它不存在。。。你为什么要这样做?也许我们可以帮助您找到解决实际问题的方法。嗯,我投了您的赞成票,但表达了我对这件事的看法。不需要第二个两个eval语句,只需要第一个。@RobG您的意思是我可以将三个eval中的字符串连接起来?是的,我能。但通过这种方式,我证明了新引入的变量在
eval
完成后仍然存在。您也可以构建一个函数体并使用函数构造函数,但我猜这与eval大致相同。OP没有解释他们想做什么,所以很难提出解决方案。对象属性通常如此