我正在尝试使用d3.js制作可重用的图表。这些代码有效,但是它们非常多余。
我正在尝试简化以下代码:
function myChart(){
// default properties
var svgWidth = 1000,
svgHeight = 250;
function chart(selection){
// do something with the previous properties ....
}
// define setter-getter functions
chart.svgWidth = function(_){
if(!arguments.length) return svgWidth;
svgWidth = _;
return chart;
};
chart.svgHeight = function(_){
if(!arguments.length) return svgHeight;
svgHeight = _;
return chart;
};
return chart;
}
如您所见,所有的setter-getter函数都非常相似。如果要设置的属性很多,例如10,则setter-getter函数将堆积得很长。
那么有人能简化它吗?
最佳答案
吻:定义一个defaults
对象并对其键进行迭代以创建新的属性:
function myChart(){
// default properties
var defaults = {
svgWidth: 1000,
svgHeight: 250
}
function chart(selection){
// do something with the previous properties ....
}
Object.keys(defaults).forEach((key) => {
chart[key] = function(_) {
if(!arguments.length) return defaults[key];
defaults[key] = _;
return chart;
};
});
return chart;
}
关于javascript - 如何简化getter-setter功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42160370/