我无法理解d3.call()的工作原理以及何时何地使用它。这是我要完成的教程链接。
有人可以请您具体解释这件作品在做什么
var xAxis = d3.svg.axis()
.scale(xScale)
.orient("bottom");
svg.append("g").call(xAxis);
Answers:
我认为这里的技巧是要了解xAxis是一个生成一堆SVG元素的函数。实际上,它是由返回的函数d3.svg.axis()
。scale和Orient函数只是链接语法的一部分(有关更多信息,请参见:http : //alignedleft.com/tutorials/d3/chaining-methods/)。
因此,svg.append("g")
将SVG组元素追加到svg并以选择的形式返回引用其自身(此处使用相同的链语法)。在选择上使用时call
,您将调用xAxis
在选择的元素上命名的函数g
。在这种情况下,您将xAxis
在新创建并附加的组上运行轴功能g
。
如果那仍然没有道理,则上面的语法等效于:
xAxis(svg.append("g"));
要么:
d3.svg.axis()
.scale(xScale)
.orient("bottom")(svg.append("g"));
IMO接受的答案.call()
是D3 API函数,不要与Function.prototype.call()混淆
selection.call(function[, arguments…])
完全调用一次指定的函数,并将此选择与任何可选参数一起传递。返回此选择。这等效于手动调用功能,但有助于方法链接。例如,要在可重用函数中设置几种样式:
现在说:
d3.selectAll("div").call(name, "John", "Snow");
这大致相当于:
name(d3.selectAll("div"), "John", "Snow");
唯一的区别是selection.call总是返回选择内容,而不是被调用函数name的返回值。
call()
呢