2012-11-28 56 views
0

我想將ajax回調函數變量賦值給現有的變量。Ajax返回的變量問題

function test(){ 

} 

test.prototype.click=function(){ 

    this.count; 

    //call ajax codes..... 

    //ajax callback function 
    ajax.callback=function(var1){ 
    //I want to assign returned data to this.count property. 
    this.count=var1.length 
    } 

} 

test.prototype.show=function(){ 
    //wont work, it will show undefined... 
    alert(this.count); 
} 

var t=new test(); 
    t.click(); 
    t.show(); 

我認爲這是範圍問題,但我不知道如何解決此問題。任何想法?提前致謝。

回答

1

是的,在另一個範圍內使用這個會導致各種問題,所以你需要解決這個問題。一種方法是通過不同的方式定義你的功能來完全避免使用它。例如,你可以像這樣定義計數:

function test() { 

    function count() { 
    } 
    ... 

而只是使用count()而沒有這個。字首。

您也可以爲此設置一個變量並使用它來引用其他範圍內的計數。例如:

var self = this; 

這個範圍的問題,可在頸部疼痛,當你做更多OO有回調可能發生。你很早就被介紹過了,所以現在你知道要警惕。

+0

感謝您的幫助。如果我使用var self = this;我應該如何在另一個範圍內調用變量?例如:test.prototype.show = function(){ alert(self.count);將無法工作。 } +1雖然 – FlyingCat

+0

只有在這導致問題的情況下,您纔會進行自綁定,這通常涉及在另一個範圍內(例如在外部函數的回調中)。這不是一個普遍的策略,只是解決這個問題時的一個解決方法,這會讓你陷入困境。 – RonaldBarzell