将字符串名称转换为对象的名称
问题描述:
首先,我的标题可能不是一个很好的标题,因此我会很乐意用任何建议更新它。将字符串名称转换为对象的名称
所以我的愿望是在一些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));
}
因此,任何输入,将不胜感激
答
你可以返工的功能,包含一个新的 “ATTR” 参数:
function (prod_sku, attr)
{
Page.getAttribute(UpdateFieldName).setValue(prod_sku[attr]);
}
你可以使用括号标记,即'prod_sku [“产品名称“]'。 – Seiyria
检查https://docs.python.org/2.7/library/functions.html#eval – bosnjak