events ( node ) {
let thisclass = this;
node.on('mouseover', ( d, i ) => {
thisclass.animateParentChain( d );
});
node.on('mouseout', (d, i) => {
d3.select(this).select("circle").attr("r", 2.5);
thisclass.unAnimateParentChain( d );
});
node.on('click', (nd, i) => {
thisclass.persistsAnimateParentChain( nd );
thisclass.loadModal(nd);
});
}
以上是es6类中的方法。原始脚本看起来像这样:
events: function ( node ) {
node.on('mouseover', function ( d, i ) {
app.radialD3.animateParentChain( d );
});
node.on('mouseout', function(d, i){
d3.select(this).select("circle").attr("r", 2.5);
app.radialD3.unAnimateParentChain( d );
});
node.on('click', function(nd, i){
app.radialD3.persistsAnimateParentChain( nd );
app.radialD3.loadModal(nd);
});
},
可以使用function关键字重写新的es6方法,例如:
events ( node ) {
let thisclass = this;
node.on('mouseover', function ( d, i ) {
thisclass.animateParentChain( d );
});
node.on('mouseout', function (d, i) {
d3.select(this).select("circle").attr("r", 2.5);
thisclass.unAnimateParentChain( d );
});
node.on('click', function(nd, i){
thisclass.persistsAnimateParentChain( nd );
thisclass.loadModal(nd);
});
}
更改为使用函数关键字和事物工作。如果没有,则脚本会出现this
关键字问题。
我对es6的东西是相当新的,但是写这个的“正确”方式是什么。在回调中,我需要this
作为html元素而不是类,但同时回调需要访问类的方法。使用function关键字似乎是向后退一步,将当前类设置为变量:/
您如何区分this
?