Lo que la respuesta aceptada omitió en mi opinión es que .call()es una función API D3 y no debe confundirse con Function.prototype.call ()
selection.call(function[, arguments…])
Invoca la función especificada exactamente una vez, pasando esta selección junto con cualquier argumento opcional. Devuelve esta selección. Esto equivale a invocar la función manualmente, pero facilita el encadenamiento de métodos. Por ejemplo, para configurar varios estilos en una función reutilizable:
Ahora di:
d3.selectAll("div").call(name, "John", "Snow");
Esto es aproximadamente equivalente a:
name(d3.selectAll("div"), "John", "Snow");
La única diferencia es que selection.call siempre devuelve la selección y no el valor de retorno de la función llamada , name.
call()hace