繁体   English   中英

Javascript 库 d3 调用函数

[英]Javascript library d3 call function

我无法理解 d3.call() 如何工作以及何时何地使用它。 是我正在尝试完成的教程链接。

有人可以具体解释一下这件作品在做什么吗

var xAxis = d3.svg.axis()
              .scale(xScale)
              .orient("bottom");

svg.append("g").call(xAxis);

我认为这里的技巧是理解 xAxis 是一个生成一堆 SVG 元素的函数。 实际上它是d3.svg.axis()返回的函数。 scale 和 orient 函数只是链接语法的一部分(在此处阅读更多内容: http : //alignedleft.com/tutorials/d3/chaining-methods/ )。

因此svg.append("g")将一个 SVG 组元素附加到 svg 并以选择的形式返回对自身的引用(此处使用相同的链语法)。 当您在选择上使用call ,您是在选择g的元素上调用名为xAxis的函数。 在这种情况下,您将在新创建和附加的组g上运行轴函数xAxis

如果这仍然没有意义,则上面的语法等效于:

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的返回值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM