javascript - Warum wird dies hier einer Variablen zugewiesen?
过去多啦不再A梦
过去多啦不再A梦 2017-05-18 10:48:59
0
3
506
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);
                }

Gibt es irgendwelche Vorteile? Kann es nicht direkt verwendet werden?

过去多啦不再A梦
过去多啦不再A梦

Antworte allen(3)
大家讲道理

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

如:
img.onload = function () {

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

}

phpcn_u1582

作用域的问题! 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这个方法里出现p.onclick等事件或定时器事件里的this弄混,也就是说此时你在p.onclick操作的function里面输出this,指的是就是p,而不是大对象animit。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage