如何在jquery回调es6中访问这个类

时间:2017-04-04 20:59:23

标签: javascript jquery ecmascript-6 es6-class

    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

0 个答案:

没有答案