gpt4 book ai didi

javascript - 将对象文字转换为可重用的类?

转载 作者:行者123 更新时间:2023-12-03 06:11:22 24 4
gpt4 key购买 nike

是否可以采用下面的代码并使其可以轻松地重复使用,而不必每次我想创建新选项时复制和粘贴:

optionA: {
chart: {
type: 'stacked',
color: 'red',
showControls: false
}
}

现在,如果我想要另一个图表,我必须立即执行此操作:

optionB: {
chart: {
type: 'line',
color: 'yellow',
showControls: false
}
}

如果有一种方法可以创建一个类或类似的东西,这样我就可以添加一个新选项,而不必重用所有相同的代码,那就太好了,有点像隐藏所有不需要知道的东西以便实现。我已经四处寻找方法来做到这一点,但我的搜索没有成功。

编辑:在查看到目前为止的回复后,我可能没有获得足够的信息。以下是完整数据:

timelineA: {
chart: {
type: 'stackedAreaChart',
color: defaultColor,
showControls: false,
showLegend: false,
useInteractiveGuideline: true,
margin: margin,

x: AnalysisTransforms.xValue,
y: function(d){
return d[1];
},

forceY: [0, 1],

noData: $scope.translations.noData,
xAxis: {
showMaxMin: false,
tickPadding: 16,
tickFormat: AnalysisTransforms.formatDate,
tickValues: AnalysisTransforms.xAxisTicks
},
yAxis: {
tickPadding: 16,
tickFormat: AnalysisTransforms.formatInteger
}
}
}

timelineB: {
chart: {
type: 'line',
color: defaultColor,
showControls: false,
showLegend: false,
useInteractiveGuideline: true,
margin: margin,

x: AnalysisTransforms.formatLine,
y: AnalysisTransforms.linex,

noData: $scope.translations.noData,
xAxis: {
showMaxMin: false,
tickPadding: 16,
tickFormat: AnalysisTransforms.formatParseDate,
tickValues: AnalysisTransforms.xticks
},
yAxis: {
tickPadding: 16,
tickFormat: AnalysisTransforms.formatInteger
}
}
}

这是来自 angular-nvd3,并且存储库没有足够的支持让我弄清楚这一点。我已经开始尝试为此创建一个类,但我不认为我遵循了最佳实践,因为我不知道如何将这样的对象文字转换为我可以为我想要创建的任何图表新建的类。

我看到的是,有一些代码在两者之间使用,而另一些则没有。我希望我不会在这个问题上超出帮助能力范围。

最佳答案

如下:

var defaults = {
color: defaultColor,
showControls: false,
showLegend: false,
useInteractiveGuideline: true,
};

function buildChart(type, opts) {
return Object.assign({
type: type,
},
defaults,
opts);
}

// Then you can do variations as
var lineChart = buildChart('line', { color: '#CCC' });
var barChart = buildChart('bar', { color: 'red' });

Object.assign 中,opts 放在最后非常重要,这样它就可以在需要时覆盖默认值

关于javascript - 将对象文字转换为可重用的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39299951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com