suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Warum wird dies hier einer Variablen zugewiesen?

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梦2804 Tage vor507

Antworte allen(3)Ich werde antworten

  • 大家讲道理

    大家讲道理2017-05-18 10:50:59

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

    如:
    img.onload = function () {

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

    }

    Antwort
    0
  • phpcn_u1582

    phpcn_u15822017-05-18 10:50:59

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

    Antwort
    0
  • 習慣沉默

    習慣沉默2017-05-18 10:50:59

    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。

    Antwort
    0
  • StornierenAntwort