Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.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 在函数中使用id时使用eval的替代方法_Javascript_Circletype - Fatal编程技术网

Javascript 在函数中使用id时使用eval的替代方法

Javascript 在函数中使用id时使用eval的替代方法,javascript,circletype,Javascript,Circletype,我知道有很多关于“评估的替代方案”的问题,但到目前为止,我还没有找到与我的案例相对应的问题。我用的是`。基本上,在我的例子中,用户提供了一个字符串,该字符串对应于具有circletype效果的元素id的一部分。然后,我将前缀粘贴到该字符串。之后,我需要使用这个字符串来破坏circletype效果 这就是我所拥有的: function(id) { var newid = "circletype" + id; var newid2 = eval(newid);

我知道有很多关于“评估的替代方案”的问题,但到目前为止,我还没有找到与我的案例相对应的问题。我用的是`。基本上,在我的例子中,用户提供了一个字符串,该字符串对应于具有circletype效果的元素id的一部分。然后,我将前缀粘贴到该字符串。之后,我需要使用这个字符串来破坏circletype效果

这就是我所拥有的:

function(id) {
   var newid = "circletype" + id;
   var newid2 = eval(newid);
   newid2.destroy();
 }
这是可行的,但我看到
eval()
是“邪恶的”,而且很有争议。因此,我尝试了一些东西,比如:

function(id) {
   var newid = {"fullid": "circletype" + id};
   newid[fullid].destroy();
 }

追随但没有成功。在这种情况下,除了
eval()

实际上,您需要做的是保留CircleType实例的引用,并通过密钥访问它。JavaScript允许您使用以下语法的键创建对象文字并访问其属性:

var value = myObject['key'];
这就是你提到的答案试图解释的

在您的情况下,您可以实现如下内容:

var circleTypes = {
    'circletypeId1': new CircleType('myElement1'), 
    'circletypeId2': new CircleType('myElement1')
};

function(id) {
   //Here Id should be equal to 'Id1' or 'Id2'
   circleTypes["circletype" + id].destroy();
}

第二个示例与此完全相同:
(“circleType”+id).destroy()

实际上,您需要做的是保留CircleType实例的引用,并通过密钥访问它。JavaScript允许您使用以下语法的键创建对象文字并访问其属性:

var value = myObject['key'];
这就是你提到的答案试图解释的

在您的情况下,您可以实现如下内容:

var circleTypes = {
    'circletypeId1': new CircleType('myElement1'), 
    'circletypeId2': new CircleType('myElement1')
};

function(id) {
   //Here Id should be equal to 'Id1' or 'Id2'
   circleTypes["circletype" + id].destroy();
}