2014-03-31 153 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]); 
     } 
相关问题