2015-05-26 91 views
1

在我的buildEstat函數中,我建立了我的腳本元素,然後等待它加載......然後我調用eSloaded(),它將在上創建一個對象var contentStreamTag。如何在另一個函數中訪問Object函數

Object {} 
    - notifyPlayer: function() 
    - post: function() 
    - set: function() 

我的問題是,在我的bindEvents()函數,我有一些播放/暫停/靜音功能。在那些播放/暫停/靜音功能中,我需要在var contentStreamTag中使用一些對象函數,比如帖子/設置功能

我很難找出這個問題。如果我的問題很混亂或者沒有意義,請告訴我。

 buildEstat: function() { 

     var eS = document.createElement('script'); 
     eS.type = 'text/javascript'; 
     eS.async = true; 
     eS.src = ('https:' === document.location.protocol ? 'https://' : 'http://') + 'prof.estat.com/js/mu-5.1.js'; 

     var s = document.getElementsByTagName('script')[0]; 
     s.parentNode.insertBefore(eS, s); 

     if (eS.addEventListener) { 
      eS.addEventListener('load', function() { 
       eSloaded(); 
      }, false); 
     } else { 
      console.log('something not working') 
     } 

     function eSloaded() { 
      var contentStreamTag = new eStatTag(confStreamingAnalytics);  
      // console.log(contentStreamTag);    
     } 
    }, 

    bindEvents: function() { 
     var self = this; 

     this.buildEstat(function(){ 

     }); 

     this.dom.play.click(function() { 
      $(this).css('display', 'none'); 
      $('.gp_pause').css('display', 'block'); 
      self.sound.play(); 

     }); 
     this.dom.pause.click(function() { 
      $(this).css('display', 'none'); 
      $('.gp_play').css('display', 'block'); 
      self.sound.unload(); 
      self.sound.stop(); 

     }); 

     this.dom.mute.click(function() { 
      self.sound.toggleMute(); 
      $(this).toggleClass('muted'); 
     }); 

     $('#goomplayer').addClass('animated bounceInUp'); 

    }, 
+0

我不理解它。你在哪裏定義'this.dom'?請提供最少量的代碼以使其完整並可供其他人使用。 – Andre

+0

請忽略this.dom,這段代碼非常大,所以我沒有粘貼整個東西。我原來的問題是關於** var contentStreamTag **,以及如何使用bindEvents中的對象函數 – anon

回答

0

contentStreamTag是eSloaded函數中的一個var。這意味着一旦該功能完成,該變量將不再存在。如果你希望它更持久,你需要將它存儲在更全局的層次上,不管是作爲全局變量還是localStorage。

0

JavaScript變量的作用域在它定義的函數中。

要訪問的變量在父範圍內,你可以移動聲明父範圍:

function parent(){ 
    var foo; 
    function innerScope(){ 
     foo = 'bar'; 
    } 
    innerScope(); 
    console.log(foo); 
} 

這增加了複雜性,以你的代碼,因爲變量將在父範圍中不存在,但不會被初始化直到調用innerScope。可以解決這個問題,例如將innerScope轉換爲對象並獲得它的一個屬性。但究竟如何解決這個問題取決於你的代碼如何工作以及如何使用它的更多信息。

相關問題