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);

これは、コマンドが関数、ウィジェットと 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 に答える