Ce que la réponse acceptée a laissé de côté, c'est que .call()
es un Fonction API D3 et à ne pas confondre avec Fonction.prototype.call()
selection.call(function[, arguments…])
Appelle la fonction spécifiée exactement une fois, en passant cette sélection ainsi que les arguments optionnels. Retourne cette sélection. Cela équivaut à invoquer la fonction à la main, mais facilite le chaînage des méthodes. Par exemple, pour définir plusieurs styles dans une fonction réutilisable :
Maintenant, dites :
d3.selectAll("div").call(name, "John", "Snow");
C'est à peu près équivalent à :
name(d3.selectAll("div"), "John", "Snow");
où le nom est une fonction, par exemple
function name(selection, first, last) {
selection
.attr("first-name", first)
.attr("last-name", last);
}
La seule différence est que selection.call renvoie toujours la sélection et non la valeur de retour de la fonction appelée le nom.