2012-02-23 52 views
2

我有一個JavaScript的命名空間的設置,如:訪問命名空間變量的更快方法?

(function (skillet, $, undefined) { 

    skillet.messages: { 

    pages: { 

     logon: { 

      errors: { 
       username: 'user is wrong' 
      } 
     } 
    } 

    }; 

} (window.skillet = window.skillet || {}, jQuery)); 

是否有訪問這個不是不停地打字的更有效的方法:

skillet.messages.pages.logon.errors.username

其他功能訪問該什麼時候?

回答

4

如果你使用特定的命名空間很多,你可以創建一個別名是:

var shortcut = skillet.messages.pages.logon 
shortcut.errors.username 
+0

甜!你認爲設置另一個'shortcuts'類型的'skillet.shortcuts {logonErrors:skillet.messages.pages.logon.errors}'可以很容易地從任何地方訪問'skillet.shortcuts.logonErrors.username'嗎? – Andy 2012-02-23 16:53:55

+0

這是更進一步。你可以在'skillet'對象下創建** alias **,只要你不要做太多的別名,並導致找到正確的別名另一個問題。 :) – steveyang 2012-02-23 16:56:39

+0

哈哈yep - 圈子工作! – Andy 2012-02-23 16:59:19

2

通過skillet.messages.pages.logon.errors.username訪問將是快,因爲原型鏈不會有被踩踏。但是,如果您使用的命名空間不止一次,你可以創建一個別名,以它(分配到一個局部變量):

var errors = skillet.messages.pages.logon.errors; 
... 
1

我會做這樣的事情:

function getErrors() { 
    return skillet.messages.pages.logon.errors; 
} 

alert(getErrors().username); 

它的工作原理出去同樣的事情,真的,但你的代碼更清潔一點。