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

发布于 2022-09-04 23:41:48 字数 657 浏览 11 评论 0

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

冬天旳寂寞 2022-09-11 23:41:48

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

如:
img.onload = function () {

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

}

A君 2022-09-11 23:41:48

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

猫七 2022-09-11 23:41:48

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。

你穿错了嫁妆 2022-09-11 23:41:48

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文