我正在遵循Mike Bostock 的可重用图表模式- 使用 getter/setter 关闭。但不知何故,当我用新属性实例化一个新图表对象时,现有图表正在使用这些属性进行更新:
var chart1 = new StackedAreaChart();
d3.select('#chart1')
.data([data])
.call(chart1);
// a new chart - whose properties end up in chart1!
var chart2 = new StackedAreaChart().colors(['green', 'blue']);
这是一个示例:http: //jsfiddle.net/samselikoff/YZ6Ea/3/。调整窗口大小以查看重新渲染的第一个图表,带有时尚但出乎意料的绿色色调。
我对此感到困惑。我怀疑(1)我的 setter 正在改变实际的“构造函数”,并且(2)不知何故chart1
实际上是对这个构造函数的引用,而不是像我想的那样成为它的一个单独实例。
我正在考虑使用this.margin = ...
而不是var margin =
,但由于这是我想首先在这里发布的建议模式。我错过了什么?