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