这里为什么把this赋给变量?

draw_anim:function(context){
                var me=this;
                var width = me.canvas.width,height = me.canvas.height;    
                
                    
                var img = new Image();
                img.src = this.imgsrcList[me.current];
                img.onload = function () { 
                        context.clearRect(0,0,width,height);
                        context.drawImage(img, 0, 0,img.width, img.height);
                }

clipboard.png

有什么好处吗?直接用不可以吗?

阅读 3.8k
4 个回答

一般来说这种情况可能是因为在后面某些不属于当前环境的函数(如点击事件)里面调用this,至于把this保存成临时变量有没有性能优化的效果我不太清楚

如:
img.onload = function () {

    context.clearRect(0,0,width,height);
    context.drawImage(img, 0, 0,img.width, img.height);
    //你这里想调用上面的this的话就需要用到me,因为这里的this指向的是img

}

作用域的问题! me=this 代表当前this的指向 , 如果下面在写this,可能又指向不通的对象,me可以作为一个变量接收 本次出现的this 可以在其他函数能使用,如果继续使用this ,而这个this可能指向其他对象,或者未定义!建议可以去看看this指向,作用域这些!

新手上路,请多包涵

O(∩_∩)O哈哈~ 我也是小白一枚 如有错误 请见谅
首先你这段代码是从一个大对象里截取的一段,由于你没给这个大对象,我来假设一个
var animit={

draw_anim:function(context){
            var me=this;
            var width = me.canvas.width,height = me.canvas.height;    
            
                
            var img = new Image();
            img.src = this.imgsrcList[me.current];
            img.onload = function () { 
                    context.clearRect(0,0,width,height);
                    context.drawImage(img, 0, 0,img.width, img.height);
            }

这时进入了对象的draw_anim的方法里,此时将this赋给了变量me,在这个方法里的下面的me就代表这个大对象animit。这样做是为了避免在draw_anim这个方法里出现div.onclick等事件或定时器事件里的this弄混,也就是说此时你在div.onclick操作的function里面输出this,指的是就是div,而不是大对象animit。

这个是变量访问控制的问题,这个可以看一下基础的知识

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题