2011-02-25 47 views
1

我有這樣將數據傳遞給封裝在我的web應用程序的JavaScript代碼

var data = { 
    getItem: function(key){ 
     ... 
    } 
} 

在我所有的腳本變量我可以用

data.getItem("Test"); 

但我怎麼能在jquery plugins使用它?插件通常具有以下結構

(function($, window, document) { 
    //....plugin-code 
}); 

我該如何稱這種結構?是否有可能在這些插件中使用我的全局數據變量?

+1

是,它應該是可能的(除非'data'標識符已經被通過在該插件的更局部變量/參數蓋過)。 – 2011-02-25 13:29:03

回答

1

如果您的數據變量是全球性的,則是你可以在任何地方使用它,包括jQuery插件裏面。

你需要確保數據在此之前,要使用任何自動執行功能的定義。

+0

「立即調用」而不是「自執行」 – 2011-02-25 13:36:03

+0

@Sime有趣的技術點。謝謝。 欲瞭解更多信息,請訪問: http://benalman.com/news/2010/11/immediately-invoked-function-expression/ – 2011-02-25 13:43:06

1

其實他們往往有結構

(function($) { 
    // plugin-code 
})(jQuery); 

點在於

  1. 他們可以承擔在此範圍內$永遠是jQuery的,不管別的加載定義$例如原型
  2. 一切都在這個封閉的內部定義,因此只有你選擇暴露(由$.fn$.extend)什麼是泄漏到外界

顯然,如果它只是你在你的環境的插件,你可以假設你總是運行$ = jQuery,那麼你不需要這些。 (你也有文檔和窗口:我從來沒有見過這些覆蓋,我不知道你會通過文件和窗口本身作爲參數傳入什麼)

你是否問過定義數據插件或從插件範圍外拉入?對於你可以在裏面寫什麼沒有限制,所以如果你在裏面定義和使用它,那麼你的代碼就會像befoer一樣工作。如果您需要訪問外部定義的數據,那麼您需要以某種方式將其泄露出去,例如將訪問器方法添加到$,document或window之一。

如果你在數據從插件範圍以外的拉動,那麼你仍然可以從您的瓶蓋內訪問全局變量,或者你可以在把它作爲一個額外的參數 - 我不認爲它會做任何區別。

相關問題