在 Javascript 中的对象文字中按名称(作为字符串)调用函数

Calling function by name (as a string) within an object literal in Javascript

本文关键字:字符串 调用 函数 Javascript 对象 文字      更新时间:2023-09-26

>我目前正在用JS构建一些东西,并遇到了以下情况:

// these are set programmatically, not like this, just using as an example
var data = {'someData':'blah'};
var widget = 'NameOfWidget';
var command = 'someFunctionName';
// there is a base object that has all widgets and their commands as child objects
// format would be like: UBER.WidgetName.command(data);
// here is how I have tried to call it thus far
UBER[widget][command](data);
window['UBER'][widget][command](data);

我觉得我已经快要弄清楚了,只需要一点帮助来弄清楚确切的语法!谢谢!

尝试:

UBER['widget']['command'](data); 
window['UBER']['widget']['command'](data);

UBER.widget.command(data);
window.UBER.widget.command(data);

这假设命令是一个函数,小部件和UBER是对象,window['UBER'] = UBER。

使用括号语法引用对象属性时,需要使用字符串。 如果使用.语法,则必须使用在 Javascript 中不是保留字的合法字符串文本。

例如:

var command = function(){return 5},
    widget = {},
    UBER = {};
UBER.widget = widget;
widget.command = command;
console.log(UBER['widget']['command']()); // prints 5 to Chrome's developer console or firebug

你不这样做有什么原因吗?

window[UBER.widget.command](data);

编辑:我知道你想做什么,这个答案目前不正确应该有效,因为我明白你想做什么。