【发布时间】:2017-05-22 19:20:46
【问题描述】:
在 D3.js v4 中,通过传统回调函数注册事件监听器时,this 引用当前 DOM 元素:
d3.select("div").on('mouseenter', function() {
d3.select(this).text("Yay");
});
ES6 提供了箭头函数,恕我直言,这使得 D3.js 代码更具可读性,因为它们非常简洁。但是,传统的回调不能一味的用箭头函数代替:
d3.select("div").on('mouseenter', () => {
d3.select(this); // undefined
});
文章“On D3 and Arrow Functions”很好地解释了为什么this没有按预期绑定。文章建议对需要访问当前 DOM 元素的代码使用传统的回调。
是否可以通过箭头函数访问当前的 DOM 元素?
【问题讨论】:
标签: d3.js ecmascript-6 arrow-functions