Javascript 将字符串名称转换为同名对象
首先,我的标题可能不是一个很好的标题,所以我会很高兴地更新它与任何建议 所以我的愿望是在一些javascript代码上实现DRY。本质上,除了一行的一部分外,还有三个功能(更多功能)完全相同。所以我的想法是将它模块化,在一个循环中执行一行代码 因此,任何更改之前的代码行在三个不同的函数中都是这样的:Javascript 将字符串名称转换为同名对象,javascript,jquery,Javascript,Jquery,首先,我的标题可能不是一个很好的标题,所以我会很高兴地更新它与任何建议 所以我的愿望是在一些javascript代码上实现DRY。本质上,除了一行的一部分外,还有三个功能(更多功能)完全相同。所以我的想法是将它模块化,在一个循环中执行一行代码 因此,任何更改之前的代码行在三个不同的函数中都是这样的: ...snip function (prod_sku) { Page.getAttribute(UpdateFieldName).setValue(prod_
...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));
},
因此,正如您所看到的,唯一的区别是ProductName、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
那么,我如何让我的字符串名来表示一个对象呢。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\u sku[“ProductName”]
。请检查