Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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/1/dart/3.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 在JS中将传递的字符串转换为对象引用的简单方法(不使用out eval)?_Javascript - Fatal编程技术网

Javascript 在JS中将传递的字符串转换为对象引用的简单方法(不使用out eval)?

Javascript 在JS中将传递的字符串转换为对象引用的简单方法(不使用out eval)?,javascript,Javascript,假设我有一个页内函数: <img src="someImage.jpg" onclick="doSomething(this.id)" id="someVar" alt="blah" /> function doSomething(theObject) { alert(theObject.someProp); //this is treated as "someVar".someProp as far as I can tell instead of someVar.somePro

假设我有一个页内函数:

<img src="someImage.jpg" onclick="doSomething(this.id)" id="someVar" alt="blah" />
function doSomething(theObject)
{
alert(theObject.someProp); //this is treated as "someVar".someProp as far as I can tell instead of someVar.someProp
}
我遇到的问题是doSomething函数:

<img src="someImage.jpg" onclick="doSomething(this.id)" id="someVar" alt="blah" />
function doSomething(theObject)
{
alert(theObject.someProp); //this is treated as "someVar".someProp as far as I can tell instead of someVar.someProp
}
基本上,我希望能够将该引用用作对象引用,而不是字符串,有没有一种不使用eval的简单方法

还有什么方法可以确保对象被视为字符串而不是对象

编辑:我试图引用与图像ID同名的对象,而不是图像本身。

doSomething(this) 
删除将作为对象引用实际DOM元素的.id


删除将作为对象引用实际DOM元素的.id

如果您向函数传递的是字符串(this.id),而不是对象。 应该是:

<img src="someImage.jpg" onclick="doSomething(this)" id="someVar" alt="blah" />

您正在向函数传递字符串(this.id),而不是对象。 应该是:

<img src="someImage.jpg" onclick="doSomething(this)" id="someVar" alt="blah" />

我会使用一个集合对象:

// Create an object with a property 'someProp', and return it
// (No messing with 'this')
function createSomeObject(someProp) {
  return {
    someProp: someProp
  };
}

// Keep a collection of variables
var someVars = {};
someVars.someVar = createSomeObject('prop');
someVars.otherVar = createSomeObject('prop2');
因此,您可以这样引用它们:

<img src="someImage.jpg" onclick="doSomething(this)" id="someVar" alt="blah" />
function doSomething(imageElement) {
    var someVar = someVars[imageElement.id];
    alert(someVar.someProp); // this will return "prop"
}

我会使用一个集合对象:

// Create an object with a property 'someProp', and return it
// (No messing with 'this')
function createSomeObject(someProp) {
  return {
    someProp: someProp
  };
}

// Keep a collection of variables
var someVars = {};
someVars.someVar = createSomeObject('prop');
someVars.otherVar = createSomeObject('prop2');
因此,您可以这样引用它们:

<img src="someImage.jpg" onclick="doSomething(this)" id="someVar" alt="blah" />
function doSomething(imageElement) {
    var someVar = someVars[imageElement.id];
    alert(someVar.someProp); // this will return "prop"
}


@K lvanav我相信这会导致我的函数引用图像,而不是与图像ID同名的对象。除非我弄错了?是的,将图像作为对象,是否希望另一个对象引用到图像属性?@K lvanav是的,如果您查看我发布的代码,该对象创建于:someVar=anObject(“prop”);查看您的更新,在这种情况下,当您将对象的名称设置为string@Klvanav我相信这会导致我的函数引用图像,而不是与图像ID同名的对象。除非我弄错了?是的,将图像作为对象,是否要将另一个对象引用到image属性?@K lvanav是的,如果您查看我发布的代码,该对象将在以下位置创建:someVar=anObject(“prop”);查看您的更新,在这种情况下,您需要eval来引用对象,当您的名称与我为K Ivanov所说的相同时:我相信这会导致我的函数引用图像,而不是与图像ID同名的对象。除非我弄错了?我明白了。不清楚您是否有一个名为
someVar
的对象。然后,您应该包含代码的其余部分。这就是我上面所要求的全部内容。现在,如果你运行上面的代码,它将产生未定义的,我希望它产生的“prop”与我对K Ivanov说的一样:我相信这将导致我的函数引用图像,而不是与图像ID同名的对象。除非我错了?我明白了。不清楚您是否有一个名为
someVar
的对象。然后,您应该包含代码的其余部分。这就是我上面所要求的全部内容。现在,如果你运行上面的代码,它会产生不确定的地方,我想让它产生“PROP”,我想问,这类功能背后的想法是什么?当然,我只是把JavaScript函数的概念搞砸了,就像C++或C语言一样。主要是为了自我教育。我有一个相当长的程序,只会有一个球反弹,或者我在浏览器中称为对象的球的数量。如果你愿意,我可以发布它,但是其余代码都是不相关的。请你问一下,这类功能背后的想法是什么?当然,我只是把JavaScript函数的概念搞砸了,就像C++或C语言一样。主要是为了自我教育。我有一个相当长的程序,只会有一个球反弹,或者我在浏览器中称为对象的球的数量。如果你愿意,我可以发布它,但是代码的其余部分是不相关的。太好了,这就是我要找的。但我必须保持一个全球的一些人,虽然?嗯。非常感谢。在此设置中,您确实需要保持
someVars
global。或者,您也可以将Javascript对象附加到HTMLImage元素——尽管我不记得这是否是一种好的做法,以及为什么(不是)。您可以通过使用闭包(例如,使用工厂构造函数,它可以返回一个可以访问所有私有变量的单个对象)来避免大多数全局变量。但是你总是需要至少一个全局变量,用于公共访问。太好了,这就是我想要的。但我必须保持一个全球的一些人,虽然?嗯。非常感谢。在此设置中,您确实需要保持
someVars
global。或者,您也可以将Javascript对象附加到HTMLImage元素——尽管我不记得这是否是一种好的做法,以及为什么(不是)。您可以通过使用闭包(例如,使用工厂构造函数,它可以返回一个可以访问所有私有变量的单个对象)来避免大多数全局变量。但对于公共访问,您始终需要至少一个全局变量。