2009-07-13 105 views
1

我正在編寫一個小的JavaScript庫,以使表單創建/驗證更容易。這大多是藉助javascript改進的藉口。我在討論如何接受用戶輸入來創建表單元素。散列vs特定參數

我正在尋找兩種方法。一個是採取在幾個預先確定的參數,例如標識,標籤,值

另一種是採取在其中將用於寫屬性直入形式元素的單個對象。例如,如果我想傳入id標籤和值,我只需傳入{id:'my_id',label:'my_label',value:'my_value}

第三種方法是將id,標籤,選項,其中選項是一個對象,它做了我上面描述的。

眼下傳遞對象似乎最靈活的,但我不知道是否有任何嚴重的缺點這樣做呢?我希望這可以很容易地用於大多數JavaScript用戶。 有關最佳方式的任何想法?

回答

1

處理這種通常的方法是使用一個Options對象在你的第二選擇。大多數需要選項的插件(和jQuery方法)都使用該模式。據我所知,這種方法沒有缺點,而且作爲處理選項的一種非常常見的方式,我不認爲它很難用於其他方面。

方案3,也是可以接受的,如果你有一些絕對必須例如傳遞。 ID。正是在這種情況下,選項對象最常被用作函數的最終參數。

希望這有助於

0

可以支持,有一點兩輪牛車的。您可以檢查所有arguments passed to the function

然後,您可以使用像一個條件:

var func = function(){ 
    if(arguments[0].id) { 
     id = arguments[0].id; 
    } else { 
     id = arguments[0]; 
    } 

    // .. and so on ... 
} 

這基本上說,如果第一個參數是一個對象,提取ID,否則直接使用參數。

我更喜歡對象方式,它適合於通過外部JSON數據源一起使用。

1

使用對象似乎是「標準」的方式來做到這一點在我研究的JS代碼。

使用特定參數列表(添加了訂購要求),當您擁有多個參數時,它們會很快失控。

如果您有一個「依賴」參數,例如只出現其他參數的某些值的參數,那麼使用簡單參數列表時尤其難看。

但是,在迭代對象的屬性時要小心。獲得非意圖的繼承元素很容易。 Douglas Crockford recommends使用hasOwnProperty()來檢查這種情況。