Javascript 如何扭曲d3“;翻译;变成一个函数?

Javascript 如何扭曲d3“;翻译;变成一个函数?,javascript,d3.js,Javascript,D3.js,在d3中,要将物体移动到指定位置,通常需要: g_x.attr("transform", "translate(" + x + "," + y + ")"); 我如何将其扭曲成一个函数(或方法?)调用,可以这样使用: g_x.move(x, y); 一个选择是扩展D3原型,我相信很快就会有人发布关于这些问题的答案 但是,我认为最简单的解决方案是使用,即: 只调用指定函数一次,将此选择与任何可选参数一起传入 因此,在您的例子中,让我们创建一个名为move的函数: function move(s

在d3中,要将物体移动到指定位置,通常需要:

g_x.attr("transform", "translate(" + x + "," + y + ")");
我如何将其扭曲成一个函数(或方法?)调用,可以这样使用:

g_x.move(x, y);

一个选择是扩展D3原型,我相信很快就会有人发布关于这些问题的答案

但是,我认为最简单的解决方案是使用,即:

只调用指定函数一次,将此选择与任何可选参数一起传入

因此,在您的例子中,让我们创建一个名为
move
的函数:

function move(selection, x, y) {
    selection.attr("transform", "translate(" + x + "," + y + ")");
};
例如,对于通过
100100
翻译选择,我们可以使用:

selection.call(move, 100, 100);
这是一个演示,圆圈最初位于
10,10
,1秒后被翻译为
100100

var circle=d3.选择(“circle”);
设置超时(()=>{
循环呼叫(移动,100,100)
}, 1000);
功能移动(选择,x,y){
attr(“transform”、“translate”(+x+)、“+y+”);
};


谢谢。这是有道理的。如果我想扩展原型,我应该这样做吗?即d3.selection.prototype.move=function(){}?是。这篇文章给出了一个更详细的解释:似乎下面的作品。d3.selection.prototype.move=函数(x,y){this.attr(“transform”、“translate”(+x+),“+y+”);返回此;};是的,它有效,我把它添加到了答案中。不过,它可能更为复杂:扩展“enter”选择、测试参数、充当getter(现在只是setter)等。。。