我有一个对象:
const Foo = {
bar: function(baz) { ... }
}
我想做类似的事情:
let x = 'Foo';
let y = 'cookies';
x.bar(y);
我尝试使用eval:eval(x + '.bar' + '(' + y + ')');
但它无效。
我无法使用窗口,这是代码不会在浏览器中运行。欢迎任何建议。
答案 0 :(得分:2)
您可以将Foo
包装在另一个对象中,并使用括号表示法调用该函数。
const Foo = {
bar: function(baz) { console.log(baz); }
};
var object = { Foo },
x = 'Foo',
y = 'cookies';
object[x].bar(y);

答案 1 :(得分:1)
CONDITIONAL_CHANGE_EVENT
答案 2 :(得分:0)
如果我不想误解你的问题,如果你想把'y'作为一个字符串传递给eval函数,那么你应该把它作为scape。
const Foo = {
bar: function(baz) { console.log(baz);}
}
var x = 'Foo';
var y = 'cookie';
eval(x+'.bar("'+y+'")');
否则cookie将被视为x中的'Foo'之类的变量。