2011-07-04 46 views

回答

8

多種可能性:

  • 創建正確命名範圍的公共訪問函數來獲取需求時的價值。
  • 值傳遞給在那裏將需要
  • 功能傳遞一個私人的存取功能,其他模塊
  • 把變量在一個適當的名稱範圍的全球
  • 傳遞一個「數據對象」到其他模塊,其中有值(以及其他值)

哪個最有意義取決於需要分享多少數據,需要共享多大的數據,共享是多麼廣泛,是共享方式, etc ...

用於與污染全局命名空間的影響降到最低暴露全局數據的典型設計模式是做這樣的事情:

var JF = JF || {}; // create single global object (if it doesn't already exist) 
JF.getMyData = function() {return(xxx);}; // define accessor function 
JF.myPublicData = ...; 

然後,在你的應用程序的任何地方,你可以打電話JF.getMyData();或訪問JF.myPublicData

這裏的想法是所有的公共方法(甚至數據對象)都可以掛在JF對象上,所以全局空間中只有一個新項目。其他的一切都在這個對象之內。

+1

我認爲第一種選擇是我想要做的,你能提供一些關於這將是什麼樣子的細節?非常感謝。 – fancy

+0

我在我的答案中添加了更多信息,向您展示第一個選項。 – jfriend00

+0

你提交的代碼並不會使'JF'成爲一個全局的,但是......如果'JF'沒有被定義,那麼它只是一個本地對象。那是你的意圖嗎? –

2

已經有幾個CoffeeScript的問題,沿着這些線路:

以及其他幾個人是環境特定的。如果你用一個具體的例子發佈了一個更詳細的問題,我可以提供一個更具體的答案。

+0

您是否在過去的問題摘要中知道您與此問題有關聯?哈:) :) – fancy

+0

@float哎呀!謝謝,修復。我並不是想要全部走上道格拉斯霍夫斯塔特。 –