我有一个对象:
const Foo = {
bar: function(baz) { ... }
}我想做一些类似的事情:
let x = 'Foo';
let y = 'cookies';
x.bar(y);我尝试使用eval:eval(x + '.bar' + '(' + y + ')');,但它不起作用。
我不能使用窗口,这是代码将无法在浏览器中运行。欢迎任何建议。
发布于 2017-08-23 02:08:04
const Foo = {
bar: function(baz) {
console.log(baz);
}
}
let x = 'Foo';
let y = 'cookies';
eval(x).bar(y);
发布于 2017-08-23 02:11:38
您可以将Foo包装在另一个对象中,并使用括号表示法调用该函数。
const Foo = {
bar: function(baz) { console.log(baz); }
};
var object = { Foo },
x = 'Foo',
y = 'cookies';
object[x].bar(y);
发布于 2017-08-23 02:21:43
如果我没有误解你的问题,如果你想把'y‘作为字符串传递给eval函数,你应该去掉它。
const Foo = {
bar: function(baz) { console.log(baz);}
}
var x = 'Foo';
var y = 'cookie';
eval(x+'.bar("'+y+'")');否则cookie将被视为变量,如x中的'Foo‘。
https://stackoverflow.com/questions/45824252
复制相似问题