在不污染全局命名空間的情況下,在匿名函數之外獲取變量的最佳實踐是什麼?從另一個CoffeeScript文件訪問變量?
12
A
回答
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對象上,所以全局空間中只有一個新項目。其他的一切都在這個對象之內。
2
已經有幾個CoffeeScript的問題,沿着這些線路:
- How do I define global variables in CoffeeScript?
- Expose a javascript api with coffeescript
- Getting rid of CoffeeScript's closure wrapper
以及其他幾個人是環境特定的。如果你用一個具體的例子發佈了一個更詳細的問題,我可以提供一個更具體的答案。
+0
您是否在過去的問題摘要中知道您與此問題有關聯?哈:) :) – fancy
+0
@float哎呀!謝謝,修復。我並不是想要全部走上道格拉斯霍夫斯塔特。 –
相關問題
- 1. 從另一個文件訪問變量
- 2. 從另一個訪問組件變量
- 3. 從另一個組件訪問變量
- 4. 從另一個SWF文件訪問SWF文件中的變量
- 5. 從另一個對象訪問變量
- 6. 從另一個類訪問變量objc
- 7. 從另一個類訪問類變量
- 8. 從另一個類訪問變量
- 9. 從一個組件到另一個組件的訪問變量
- 10. 從另一個php文件的類函數訪問變量
- 11. 無法從另一個文件訪問javascript變量
- 12. 導入.ccbi文件時從另一個類訪問變量
- 13. 我可以從另一個文件訪問變量嗎?
- 14. 從另一個文件訪問變量和方法
- 15. 從另一個文件在C++中訪問extern變量
- 16. 從另一個php文件訪問SESSION變量
- 17. 目標C從另一個文件訪問的全局變量
- 18. Screeps從另一個文件訪問'主'變量?
- 19. 如何從另一個php文件訪問變量
- 20. 如何從ios中的另一個nib文件訪問變量
- 21. Perl:從另一個文件訪問「我的」變量
- 22. 從另一個文件訪問存儲在類中的變量
- 23. coffeescript訪問實例變量
- 24. 從CoffeeScript訪問控制器變量
- 25. 從nodejs的另一個CoffeeScript文件中請求CoffeeScript文件
- 26. 從另一個組件類訪問組件類變量
- 27. 訪問變量從另一個玉文件中的Jade文件傳遞
- 28. 從另一種形式訪問變量
- 29. 從另一種方法訪問變量
- 30. 訪問函數從另一個文件
我認爲第一種選擇是我想要做的,你能提供一些關於這將是什麼樣子的細節?非常感謝。 – fancy
我在我的答案中添加了更多信息,向您展示第一個選項。 – jfriend00
你提交的代碼並不會使'JF'成爲一個全局的,但是......如果'JF'沒有被定義,那麼它只是一個本地對象。那是你的意圖嗎? –