2009-12-11 116 views
1

我相信有人已經過去了,但我沒有找到一些結果的運氣。 我想知道什麼是維持適當變量範圍的最快方法。 這是我今天早上寫的一些jQuery代碼示例。在數組中存儲javascript變量

var oSignup = { 
    nTopMargin: null, 
    oBody: $("div#body"), 
    oSignup: $("div#newsletter_signup"), 
    oSignupBtn: $("div#newsletter_signup a.btn-s4") 
} 

oSignup.nTopMargin = Math.abs(oSignup.oSignup.offset().top); 
oSignup.oSignupBtn.toggle(function(){ 
    oSignup.oSignup.css({"top":0}); 
    oSignup.oBody.css({"top":oSignup.nTopMargin}); 
},function(){ 
    oSignup.oSignup.css({"top":-(oSignup.nTopMargin)}); 
    oSignup.oBody.css({"top":0}); 
}); 

這是好的還是壞的做法?

+0

是好還是壞的做法? – 2009-12-11 17:57:25

+1

小挑剔:你將它們存儲在一個對象中,而不是一個數組 – cobbal 2009-12-11 18:30:30

+0

@Johnathan:是我的變量創建/使用方法皺眉還是首選?爲什麼?將是我的最終問題。 – 2009-12-11 19:32:53

回答

2

這不是「理想」。這裏有以下問題:

  • 不要混合/匹配聲明樣式,如果一切都可以在{}聲明中完成,那麼這樣做,如果它不能,請在選擇事物時非常明智
  • 請勿將對象的名稱與其包含的字段相同。它當然是有效的,但不是一個「好」的想法,很難理解和維護。
+0

我認爲範圍是相當不錯的,我要注意的一件事是在你的函數中不要說oSignup.oSignup.css,引用全局變量是BAD,而是使用this.oSignup.css。 – Zoidberg 2009-12-11 17:59:08

+1

@Zoidberg:但是'this'是'oSignup.oSignupBtn'! – 2009-12-11 18:08:11

+0

是的,我很快意識到我發佈後做了些什麼。我已經改變了這一點。除了我的名字間距錯誤,這是首選的方法嗎?範圍對我很重要,但速度更重要。變量創建的標準方法是否更快? IE:var foo =「bar」; – 2009-12-11 19:18:29

0

我與Zoidberg。這很好。事實上,它比我見過的其他一些更精緻,並且會對我進行+1代碼審查。

1

本質上,你說的是命名空間。也就是說,保持應用程序的變量和邏輯與其他任何東西分離。只要你意識到不這樣做的缺陷,你就會高於其他大多數人(不包括現在的公司)。

邁克爾的建議是簡潔而真實的,但你正朝着正確的方向前進。如果您希望獲得關於名稱空間最佳做法的更多建議,只需在谷歌搜索中檢出大部分頂級搜索結果即可,但特別是,這將爲您提供密集但非常靈活的名稱空間等方式。