Javascript 评估模板字符串和类实例

Javascript 评估模板字符串和类实例,javascript,arraylist,instance,eval,nodelist,Javascript,Arraylist,Instance,Eval,Nodelist,在代码重构过程中,eval()被投入服务来解析模板字符串并实例化一个类。正在运行的代码链接到下面 eval(`let ${tempid} = new Accordian(${"[j]"})`) 为什么这个字符串似乎需要在[j]引用的对象周围加引号才能工作 我的另一个问题与类实例有关,以及它们是否已创建 因此,变量tempid应该是从节点列表中提取的字符串,但我得到的错误似乎表明了另一种情况,尽管代码运行,但在我看来,除非它为从标记中提取为唯一的每个accordian对象实例化了一个新类,否则

在代码重构过程中,eval()被投入服务来解析模板字符串并实例化一个类。正在运行的代码链接到下面

 eval(`let ${tempid} = new Accordian(${"[j]"})`)
为什么这个字符串似乎需要在[j]引用的对象周围加引号才能工作

我的另一个问题与类实例有关,以及它们是否已创建

因此,变量tempid应该是从节点列表中提取的字符串,但我得到的错误似乎表明了另一种情况,尽管代码运行,但在我看来,除非它为从标记中提取为唯一的每个accordian对象实例化了一个新类,否则它不会这样做

是否创建了两个新的类实例

我得到以下错误:

 'Accordian' is defined but never used. (no-unused-vars) eslint

 'use strict' is unnecessary inside of modules. (strict) eslint

 eval can be harmful. (no-eval) eslint

为什么要引用?
“[j]”
是通过
${
}
插入模板字符串的字符串。据我所知,整个
${“[j]”}
部分可以用
[j]
替换

“手风琴从未使用过” 您的linter不知道
eval
在运行时会做什么。由于您只在字符串中使用了
Accordian
,因此它实际上没有在代码中使用

“评估可能有害”
eval
是邪恶的。根据插入的
tempid
的值,经过计算的字符串可能包含任意(可能有害)代码。您可能想使用
tempid
在某些对象上设置属性,例如
global[tempid]=new Accordian([j])
。这也会让linter看到类的用法。

我觉得你的评论非常有用,从中可以看到一个包含tempid的对象替换了数组,从而可以摆脱eval altogehter,但是,使用提取的字符串作为变量名(与accordian ID相同)实例化新类的问题仍然存在,据我所能确定。谢谢你的关注。不,你的评论,所有的,继续。我在这个实例中的作用域问题上遇到了麻烦,因此最终能够通过登录到IFFE中进行调用的控制台来“查看”我的实例。它不一定是一个对象,但是类实例的集合更容易在REPL中以这种方式看到。