gpt4 book ai didi

javascript - 在 d3 中使用箭头函数

转载 作者:可可西里 更新时间:2023-11-01 01:23:43 26 4
gpt4 key购买 nike

这可能吗?我不确定,因为 d3 大量使用 this 重新绑定(bind),这似乎与 ES6 spec 冲突.

例如,以下工作正常:

// Working fine
var data = [1,2,3]
var svg = d3.select('body').append('svg').attr('height', 500).attr('width', 500).style('background-color', 'orange');
var gs = svg.selectAll('g').data(data).enter();
gs.append('circle')
.attr('cx', function () { return Math.random()*500; })
.attr('cy', function () { return Math.random()*500; })
.attr('r', function () { return Math.random()*100; })
.each(function () { console.log(this); }); // this is bound to the current element in the enter selection

虽然以下内容没有按预期工作(this 未绑定(bind)到输入选择中的当前元素,而是绑定(bind)到 Window 对象):

var data = [1,2,3]
var svg = d3.select('body').append('svg').attr('height', 500).attr('width', 500).style('background-color', 'blue');
var gs = svg.selectAll('g').data(data).enter();
gs.append('circle')
.attr('cx', () => Math.random()*500)
.attr('cy', () => Math.random()*500)
.attr('r', () => Math.random()*100)
.each(() => console.log(this)); // this is bound to Window object

相关 fiddle here .

最佳答案

如果你使用的是 d3v4,你可以像这样访问当前的 DOM 节点:

gs.append('circle')
.attr('cx', () => Math.random()*500)
.attr('cy', () => Math.random()*500)
.attr('r', () => Math.random()*100)
.each((d, i, j) => console.log(j[i]));
// j is current group, i is current index

关于javascript - 在 d3 中使用箭头函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32881022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com