我使用 Google 图表 + jQuery API 编写了一些不错的包装器,当您将鼠标悬停时它们会进行很好的更新。我目前正在重构我的代码。我有返回具有属性的对象的函数,这些属性本身具有其他属性,依此类推。有很多函数返回包含属性对象的数组,其中一些是数组等。
这是我的代码示例,它从 ajax XML 树加载 ROC 和似然表的集合:
function XMLAttributeTable(subtree, point_name, arr_of_attributes) {
// note: assumes numeric attribute values
var attributes_for_each_point = [];
$(subtree).find(point_name).each(function() {
row = $(this);
var point = {};
arr_of_attributes.forEach( function(attr_name) {
point[attr_name] = parseFloatPlus(row.attr(attr_name));
});
attributes_for_each_point.push(point);
});
return attributes_for_each_point;
}
function XMLAttributeTableCollection(subtree, instance_name, point_name, arr_of_attributes) {
// note: assumes the series are in order
var tables_for_each_instance = [];
$(subtree).find(instance_name).each( function() {
tables_for_each_instance.push( XMLAttributeTable( this, "point", arr_of_attributes ) );
});
return tables_for_each_instance;
}
function getROCSeriesForEachRanking(roc_subtree) {
return XMLAttributeTableCollection(roc_subtree, 'roc_series', 'point', ['index', 'target_groups', 'q_value']);
}
function getLikelihoodSeriesForEachRanking(likelihood_subtree) {
return XMLAttributeTableCollection(likelihood_subtree, 'likelihood_series', 'point', ['index', 'likelihood']);
}
这些功能有很多,我并不是很喜欢这个(分离关注点感觉非常困难)。我可能对尝试使用其他语言(即 C++)的语义来编写 JavaScript 感到内疚,如果是这样,感谢您的建议。但我无法摆脱有代码气味的感觉。
所以我的问题是,JavaScript 中的构造函数有什么好处?如果没有强类型或强制封装的实用选项,那么为什么要使用构造函数呢?在这种情况下,我似乎无法弄清楚如何使用成员函数来改善我的生活,因此“继承”似乎不是很有用。
非常感谢您提供的任何建议。