2012-07-20 103 views
1

有關於在另一個原型函數中調用一個原型函數的問題。Javascript原型繼承原型函數調用

例如讓我說我有一個基本的滑塊與兩個原型功能。

function Slider() { 

} 

Slider.prototype.transition = function() { 

} 

Slider.prototype.setTargets = function() { 

} 

什麼是調用setTargets功能的轉換函數的內部,像這樣的正確方法:

Slider.prototype.transition = function() { 
    this.target.fadeOut('normal', function() { 
     // call setTargets? 
     this.setTargets(); // errors when i do this 
    }); 
} 

感謝您的幫助

回答

1

如果this.target是一個jQuery對象回調fadeOut將被稱爲this作爲DOMNode。

而是執行此操作:

Slider.prototype.transition = function() { 
    var me = this; 
    this.target.fadeOut('normal', function() { 
     me.setTargets(); // <-- See me 
    }); 
} 

我選擇的名字thatme爲以this我所有的初始化引用。我從來沒有使用thatme爲DomNodes,等等。

請參閱有關此點的觀點。

編輯:

Acually我用methat - 不知道是什麼即時通訊思想? !


而對於評論:

Slider.prototype.transition = function() { 
    var me = this; 
    this.target.fadeOut('normal', function() { 
     var domThis = this; 
     me.setTargets(); // <-- See me 
     setTimeout(function() { 
      // Use domThis [Dom Node] 
     }, 123); 
    }); 
} 

或者:

可以做出這樣的jQuery對象:

 var $this = $(this); 
     me.setTargets(); // <-- See me 
     setTimeout(function() { 
      // Use $this [jQuery Object] 
     }, 123); 

如果你需要這個jQuery對象你可以參考:me.target

 me.setTargets(); // <-- See me 
     setTimeout(function() { 
      // Use me.target [jQuery Object] 
     }, 123); 
+0

+1但是* ugh *'that'。 '那'使* no *感覺。 '自我'也許...... :-) – 2012-07-20 17:36:22

+0

有些人不喜歡'自我',因爲一些很好的理由。也許在我的回答中將它命名爲「slider」。 – 2012-07-20 17:37:14

+0

啊......我是個白癡。說得通。謝謝! – jchamb 2012-07-20 17:39:12

0

fadeOut功能是不是在你的slider對象的情況下調用。

Slider.prototype.transition = function() { 
    var slider = this; 
    this.target.fadeOut('normal', function() { 
     // call setTargets? 
     slider.setTargets(); // should work now. 
    }); 
}