![](/img/trans.png)
[英]JavaScript: How to combine two different but pretty similar functions?
[英]How to combine similar functions - Javascript
我有两个非常相似的功能,如果可能的话,我希望将它们结合起来。 我唯一的问题是一个函数正在接受2个参数,另一个函数正在接受3。是否有办法做到这一点,或者这两个函数必须按设计分开?
function getClientData(id, command) {
var formData = {
'method': command,
'id': id
};
getEntityData(formData);
}
function getLocation(id, clientid, command) {
var formData = {
'method': command,
'locationid': id,
'clientbrandid': clientid
};
getEntityData(formData);
}
更新资料
function getEntityData(data) {
var url = '/../admin/miscellaneous/components/global.cfc?wsdl';
var ajaxResponse = $.ajax({
url: url,
dataType: 'json',
data: data,
global: false,
async:false,
cache: false,
success: function(apiResponse){
return apiResponse;
}
}).responseJSON;
var response = ajaxResponse[0];
for (var i in response) {
if (response.hasOwnProperty(i)){
$("#edit"+i).val(response[i].trim());
}
}
}
是的,可以,我更喜欢代替传递每个参数,而可以传递一个js对象,并确定它所包含的参数,例如:
function getLocation(options) {
getEntityData(options);
}
您的电话应该是:
getLocation({'method': command,'id': id})
更新资料
或者您可以避免使用getLocation函数,而只需调用getEntityData
getEntityData({
'method': command,
'id': id
});
function getLocation(id, clientid, command) {
var formData = {
'method': command,
'locationid': id
};
if (clientid) {
formData['clientbrandid'] = clientid;
}
getEntityData(formData);
}
// With
getLocation(1, 2, 'doStuff');
// Without
getLocation(1, '', 'doStuff');
也许是一个更合理的论证顺序:
function getLocation(id, command, clientid) {
var formData = {
'method': command,
'locationid': id
};
if (clientid) {
formData['clientbrandid'] = clientid;
}
getEntityData(formData);
}
// With
getLocation(1, 'doStuff', 2);
// Without
getLocation(1, 'doStuff');
如果locationid
和id
不同:
function getLocation(id, command, clientid) {
if (clientid) {
var formData = {
'method': command,
'locationid': id,
'clientbrandid': clientid
};
} else {
var formData = {
'method': command,
'id': id,
};
}
getEntityData(formData);
}
// With
getLocation(1, 'doStuff', 2);
// Without
getLocation(1, 'doStuff');
我想这真的取决于您的论点到底是什么,但这也是一个解决方案。 (假设客户端id是一个对象)。
function getLocation(id, command, clientid) {
var _clientId = clientid || {};
var formData = {
'method': command,
'locationid': id,
'clientbrandid': _clientid
};
getEntityData(formData);
}
我会去:
function getWhatever(id, command, clientId) {
var formData = { method: command };
if (typeof clientId === 'undefined') {
formData.id = id;
} else {
formData.locationid = id;
formData.clientbrandid = clientId;
}
getEntityData(formData);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.