猿问

关于this 的问题

        <div id="father">

            <div id="son"></div>

        </div>

        <script src="jquery-1.11.3.js"></script>

        <script>

            $(function(){

                $("#son").fadeOut(3000,function(){this.remove()});

            });

        </script>

如上的简单代码,页面加载完,#son在3秒内淡出页面,然后从dom树删除。
上面的方法可以实现。
但是当我把fadeOut中的回调函数改成箭头函数,如下:

            $(function(){

                $("#son").fadeOut(3000,()=>this.remove());

            });

这样就无法删除了,this指向了window。请教是为什么??不应该是第一种方法中的this指向window吗??谢谢

千巷猫影
浏览 444回答 1
1回答

翻翻过去那场雪

函数中的this是在函数被调用时生成的,是传递给函数的一个隐式变量,指向函数的上下文。所以this的指向跟函数的调用方法有关,当函数作为对象的方法调用时,this指向的是这个方法的对象。You can't use 'macro parameter character #' in math mode("#son")对象调用了这个方法,所以回调函数中this就指向$("#son");在ES6语法规定箭头函数不再绑定this,所以箭头函数中this始终指向window。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答