2010-04-16 54 views
1

$ .Comment = function(){ this.alertme =「Alert!」; }

$.Comment.prototype.send = function() { 

    var self = this; 
    $.post(
    self.url, 
    { 
     'somedata' : self.somedata 
    }, 
    function(data, self) { 
     self.callback(data); 
    } 
); 

} 

$.Comment.prototype.callback = function(data) { 
    alert(this.alertme); 
} 

當我調用$ .Comment.send()調試器說,我認爲self.callback(data) is not a function

我在做什麼錯?

謝謝

回答

2

你不想申報self作爲參數傳遞給成功的功能。如果你刪除了這個聲明,你將會得到你想要的局部變量。例如: -

$.Comment = function() { 
    this.alertme = "Alert!"; 
} 

$.Comment.prototype.send = function() { 

    var self = this; 
    $.post(
     self.url, 
     { 
      'somedata' : self.somedata 
     }, 
     function(data) {   // <== removed `self` argument 
      self.callback(data); // <== now sees `self` local var 
     } 
    ); 

} 

$.Comment.prototype.callback = function(data) { 
    alert(this.alertme); 
} 
0

你不應該申報自我作爲參數:

function(data) { 
    self.callback(data); 
} 

這樣將是一個閉合和函數中引用正確的對象。

相關問題