This question already has answers here:
Using a string to access a variable
(3个答案)
在8个月前关闭。
我有一个JS功能如下
现在,函数
而当我尝试传递如下变量时,它在行
变量
如果您不这样做:
请注意,
(3个答案)
在8个月前关闭。
我有一个JS功能如下
// A simple array where we keep track of things that are filed.
filed = [];
function fileIt(thing) {
// Dynamically call the file method of whatever 'thing' was passed in.
thing.file();
// Mark as filed
filed.push(thing);
}
现在,函数
fileIt(thing)
在如下调用时运行良好fileIt(AuditForm);
而当我尝试传递如下变量时,它在行
thing.file();
处给出错误var formID = obj.id;
fileIt(formID);
变量
formID
具有相同的值,即“ AuditForm”在这里出了什么问题。请提示。 最佳答案
如果obj.id
是字符串AuditForm
,则别无选择,只能在全局window
对象上使用动态属性表示法,或者,如果未在eval
上用AuditForm
声明var
,则使用AuditForm
。全球范围:
如果在全局范围内用var
声明eval
:
fileIt(window[formID]);
如果您不这样做:
fileIt(eval(formID));
请注意,
obj.id
是一个非常差的选择,就像eval
可以解释为其他代码一样,例如将评估另一个调用,然后可以执行恶意操作。例:const obj = {
id: "eval('alert(\"Inside an eval script!\")')"
};
eval(obj.id);
09-12 05:53