动态调用对象

时间:2017-08-22 18:04:56

标签: javascript object

我有一个对象:

const Foo = {
  bar: function(baz) { ... }
}

我想做类似的事情:

let x = 'Foo';
let y = 'cookies';

x.bar(y);

我尝试使用eval:eval(x + '.bar' + '(' + y + ')');但它无效。

我无法使用窗口,这是代码不会在浏览器中运行。欢迎任何建议。

3 个答案:

答案 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'之类的变量。