javascript,箭头功能和此

时间:2018-12-07 16:54:49

标签: jquery ecmascript-6 event-handling this arrow-functions

我有一个函数可以从页面中删除li元素(还有尚未创建的元素):

const removeLi = function () {

        console.log(this);

        $(this).parent().remove()
    };
$("ul").on("click",'button.delete', removeLi);

有效。 但是,在我尝试通过apply()方法执行此操作之前,我注意到一些我不理解的事情。

a)为什么有效:

const removeLi = function () {

            console.log(this);

            this.parent().remove()
        };

    $("ul").on("click",'button.delete', function () {
           const $this = $(this);
           console.log($this);
            removeLi.apply($this);

        });    

removeLi更改为箭头功能后,不是吗?

const removeLi = ()=> {

        console.log(this);

        this.parent().remove()
    };

console.log(this)给出window并且控制台抛出错误?

b)为什么这种构造无法工作:

const removeLi = ()=>{

    console.log(this);

    $(this).parent().remove()
};

$("ul").on("click",'button.delete', function () {

       console.log(this);
       removeLi()

    });   

如果箭头功能未更改this的上下文,则应该起作用,对吗? 请帮助我理解。 预先感谢

0 个答案:

没有答案