2016-01-06 122 views
1

我遇到了Javascript中命名函數的問題。從javascript中的其他命名函數調用命名函數

我有這個重載函數

SN.Reload = function(settings) { 

     var _timer = null; 
     var $grid = null; 

     var init = function() { 

      $grid = $(settings.wrapperSelector); 

      if (_timer > 0 || _timer != null) 
       _timer = settings.timer; 
      else 
       _timer = 600000; 

      window.setInterval(function() { 

       LoadData(); 

      }, _timer); 

     }; 

     var LoadData = function() { 

      $.ajax({ 
       url: '/data.json', 
       type: 'GET', 
       dataType: 'json', 
       cache: false, 
       success: UpdateData, 
       error: DataErrorHandler 
      }); 

     }; 
} 

在正常狀態下,這將在X分鐘運行LoadData功能 - 這按預期工作。

我現在有另一個名爲功能

SN.CreateJsonFromDate = function (settings) { 

.... 

    var SuccessLoad = function() { 

     _dateLoader.hide(); 
     _wrapper.slideUp(); 



    } 
} 

是否有可能使用LoadData從SN.Reload裏面SN.CreateJsonFromDate的SuccessLoad功能?

上成功的LoadData函數調用UpdateData的更新從JSON數據的HTML,我想在SN.CreateJsonFromDate再次調用此功能,因爲這將產生一個新的JSON文件。

+0

看起來像私人功能。 –

+0

掛上......我可以澄清一下,「SN.Reload」的意圖是聲明一些變量(其中一些是函數),然後對它們不做任何處理並放棄它們? – Katana314

+0

@ Katana314 - 是的,你可以澄清,但它沒有區別。 'LoadData'只能在'SN.Reload'的範圍內訪問,並且在編寫代碼時不能在其外部訪問。 – Adam

回答

2

沒有,因爲根本LoadData沒有的SN.Reload

範圍之外的存在。如果你想重新使用LoadData功能,不限制它的範圍是內SN.Reload,而是,也許(這取決於什麼你想要的),附加到命名空間爲SN.LoadData

+0

是的。問題是範圍!重寫了整個腳本以使重載功能可用,並且它現在正在工作!謝謝! –

2

是的,如果你實例化SN.Reload。 例如:

var obj = new SN.Reload(settings); 

那麼你可以使用LoadData從這個對象,像這樣:

obj.LoadData(); 

是的,你有LoadData公衆使​​用本作:

this.LoadData = function(){/*your code*/}