簡體   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