2011-03-27 24 views
0

我有一個對象,看起來像這樣:JavaScript的合併參數

StandardFormat({ 
    HeaderFont: 'greentext2', 
    HeaderLinkFont: 'bluelink3', 
    Backcolor: 'Black', 
     ... 
}); 

到目前爲止,我有了這種形式的函數:

FormatGrid(ID, HeaderFont, HeaderLinkFont, BackColor,...){} 

所有的參數列,並且必須提供在通話中。我想要做的就是這種替換:

FormatGrid(ID, Format){} 

這樣的話,我可以寫這樣的事:

FormatGrid('TopGrid', StandardFormat);並能夠發送網格和任何格式對象的ID。

我有點卡住了。你如何合併參數?

感謝您的建議。

回答

2

你可以這樣做......

function FormatGrid(ID, Format) { 
    var options; 
    if (typeof Format != 'string') { 
     options = Format; 
    } else { 
     options = { 
      HeaderFont: arguments[1], 
      HeaderLinkFont: arguments[2], 
      Backcolor: arguments[3] 
     } 
    } 

    // Here you could then access `options.HeaderFont`. 
} 

jsFiddle。但是,這個解包到window

+0

if ... else是必需的嗎?我剛剛離開選項=格式;但是當我寫alert(options.HeaderFont)時它不起作用; – frenchie 2011-03-27 23:29:40

+0

@frenchie你是否想要允許兩種方式,對象文字*和*列出的參數? – alex 2011-03-27 23:32:07

+0

不知道有什麼區別。在函數內部,我只想寫$(this).css('background-color',BackColor);並使用我要放入對象StandardFormat中的參數。 – frenchie 2011-03-27 23:37:36