javascript - 這裡為什麼要把this賦給變數?
过去多啦不再A梦
过去多啦不再A梦 2017-05-18 10:48:59
0
3
510
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);
                }

#有什麼好處嗎?直接用不行嗎?

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

全部回覆(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。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板