2013-09-02 8 views
0

Я хочу вызвать posts() в функции обновления. Вот мой код.вызов функции класса в другой функции класса в javascript

var TIMELINE = TIMELINE || (function(){ 

    /*** private ***/ 
    var _args = {}; 
    var self = this; 

    return { 

     init : function(Args){ 
      _args = Args; 
     }, // init 
     posts : function(data) { 

      alert('posts called'); 

     }, // posts 
     unsetMarkers : function() { 

      alert('unsetMarkers called'); 

     }, // unsetMarkers 
     refresh : function(){ 
      self.posts; 
     } 

    }; 


}()); 

проблема в этой линии self.posts; Я также попытался self.posts({'data':'success','another':'thing'}); Как я могу использовать сообщения в обновлении?

+1

* "Я хочу, чтобы вызвать сообщения() в функции обновления." * Cool. И в чем ваш вопрос? –

+1

называют «self.posts (data)»; : D Вам также необходимо передать данные. Но я не вижу данных, построенных где угодно. – Anand

+0

@FlixKling проблема в этой строке self.posts; Я также пробовал self.posts(); Как я могу использовать сообщения в обновлении? – Bilal

ответ

2

Есть две проблем в вашем коде:

  • self не относится к объекту со свойством posts, то есть не к объекту вы возвращающиеся из функции. У вас есть var self = this; и this относится к window (при условии нестрогого режима).
  • Вы даже не пытаетесь сделать звонок функция.

Вместо того, чтобы немедленно возвращая объект, присвоить его self:

// instead of `var self = this;` 
var self = { 
    // function definitions 
}; 

return self; 

, а затем вы можете вызвать метод с

self.posts(); // note the parenthesis after the function name 

Если вы уверены, что функция refresh является всегда называется TIMELINE.refresh() (то есть как метод объекта TIMELINE), то вы также можете позвонить posts метод с

this.posts(); 

и забыть о self.


Далее материал для чтения:

  • MDN - this: Узнайте, какое значение имеет this в различных контекстах.
  • Eloquent JavaScript - Functions: Узнайте, как работают функции.
Смежные вопросы