1

我目前正在用 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);

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

4

2 回答 2

0

你不这样做是有原因的吗?

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

编辑:我明白你在做什么,这个答案目前不正确应该可以工作,因为我了解你正在尝试做什么。

于 2012-05-08T12:10:21.920 回答
0

尝试:

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

或者

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

这假设 command 是一个函数,widget 和 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
于 2012-05-08T13:21:30.733 回答