我将一个大的“选项”对象传递给我在 JavaScript 中实例化的另一组对象。问题是,这些“选项”中的极少数必须从一个对象更改为另一个对象。制作一个完全独立的选项变量,改变许多选项中的一个,感觉很愚蠢。我也不认为我可以只更改同一“选项”对象上的选项,因为所有对象都将引用相同的“选项”。
下面是相关代码。
for (var i = 0; i < invoices.length; i++) {
var ura_original_column = { "column" : "ura_ppa_original",
"on_update" : [format_ura],
"display" : "URA" };
if (invoices[i]["type"] == "P") {
ura_original_column = { "column" : "ura_original",
"on_update" : [format_ura],
"display" : "URA" };
}
var options = { template_table : "template_table",
template_total : "template_total",
template_row : "template_row",
template_text : "template_text",
template_select : "template_select",
packet_id : <?val=packet["packet_id"]?>,
products : <?val=json.dumps(products)?>,
allow_new_rows : <?val=json.dumps(packet["status"] not in api.NON_MODIFIABLE_STATUS)?>,
on_table_focus : on_table_focus,
on_row_update : on_row_update,
on_new_row : on_new_row,
columns : [{"column" : "product_code",
"display" : "Product"},
{"column" : "transaction_type",
"display" : "FFSU/MCOU",
"editor" : "selectedit",
"options" : ["FFSU", "MCOU"]},
ura_original_column,
{"column" : "ura_current",
"display" : "Calculated URA"},
{"column" : "units_current",
"display" : "Current Units",
"on_update" : [format_units],
"show_total" : true},
{"column" : "amount_claimed",
"display" : "Amt Claimed",
"on_update" : [format_currency],
"show_total" : true},
{"column" : "scripts_current",
"display" : "Scripts",
"on_update" : [format_scripts],
"show_total" : true},
{"column" : "amount_medi_reimbursed",
"display" : "MEDI Amt",
"on_update" : [format_currency],
"show_total" : true},
{"column" : "amount_non_medi_reimbursed",
"display" : "Non-MEDI Amt",
"on_update" : [format_currency],
"show_total" : true},
{"column" : "amount_total_reimbursed",
"display" : "Total Amt",
"on_update" : [format_currency],
"show_total" : true}]}
var invoice_id = invoices[i]['invoice_id'];
var transactions = transactions_by_invoice[invoice_id];
var table = new Table.Table("invoice_" + invoice_id, options, transactions);
tables.push(table);
}
});
因此,在这个巨大的选项结构中,只有“ura_original_column”发生了变化。这可能是最好的方法,但感觉有点像黑客。
有人有更优雅的建议吗?
感谢您花时间查看。