2014-03-31 72 views
0

首先,我的標題可能不是一個很好的標題,因此我會很樂意用任何建議更新它。將字符串名稱轉換爲對象的名稱

所以我的願望是在一些JavaScript代碼上實現DRY。實質上,除了一行的一部分外,還有三個功能(更多內容)完全相同。所以我的想法是模塊化,並在一個循環執行一行。

所以代碼的任何改動之前的行會看起來像這樣的三個不同的功能:

...snip 
function (prod_sku) 
     { 
      Page.getAttribute(UpdateFieldName).setValue(prod_sku.ProductName)); 
     }, 


...snip 2 
function (prod_sku) 
     { 
      Page.getAttribute(UpdateFieldName).setValue(prod_sku.ProductSKU)); 
     }, 

...snip 3 
function (prod_sku) 
     { 
      Page.getAttribute(UpdateFieldName).setValue(prod_sku.ProductQty)); 
     }, 

因此,大家可以看到的唯一差異是產品名稱,ProductSKU,ProductQty。

所以我的想法是有一個調用,其中要更新的字段被傳遞,然後拆分成一個數組。

passed in as 'ProductName,ProductSKU,ProductQty,...' (UpdateFieldValue is the parm variable) 

split into an array as var arrayUpFldVal = UpdateFieldValue.split(','); 

然後通過數組循環執行數組val,並連接數組。

function (prod_sku) 
     { 
      Page.getAttribute(UpdateFieldName).setValue(prod_sku +'.' + arrayUpFldVal [index])); 
     }, 

只有當你可能預測將要將對象轉換爲能夠連接的字符串表示形式時。

[object Object].ProductNumber 

那麼如何讓我的字符串名稱代表一個對象..i.e。 prod_sku.ProductName

我可以做一系列的if語句,如下面的,但...有點似乎打敗了主要目標...確定它減少了很多重複代碼,但我希望有一個乾淨的解決方案。

if(arrayUpFldVal == 'ProductName') 
{ 
    Page.getAttribute(UpdateFieldName).setValue(prod_sku.ProductName)); 
} 

因此,任何輸入,將不勝感激

+3

你可以使用括號標記,即'prod_sku [「產品名稱「]'。 – Seiyria

+0

檢查https://docs.python.org/2.7/library/functions.html#eval – bosnjak

回答

1

你可以返工的功能,包含一個新的 「ATTR」 參數:

function (prod_sku, attr) 
     { 
      Page.getAttribute(UpdateFieldName).setValue(prod_sku[attr]); 
     }