SORU
13 Kasım 2008, PERŞEMBE


JavaScript çeteleler?

JavaScript çeteleler tanımlamak için tercih edilen sözdizimi nedir? Gibi bir şey

my.namespace.ColorEnum = {
    RED : 0,
    GREEN : 1,
    BLUE : 2
}

// later on

if(currentColor == my.namespace.ColorEnum.RED) {
   // whatever
}

Ya da daha tercih edilebilir bir deyim vardır?

CEVAP
4 Mart 2010, PERŞEMBE


GÜNCELLEMEBütün herkes için teşekkürler upvotes, ama cevabım aşağıda Javascript çeteleler artık yazmak için en iyi yol olduğunu sanmıyorum. Daha fazla bilgi için benim blog yazısı bakın: Enums in Javascript.


Adı uyarı zaten mümkün

if(currentColor == my.namespace.ColorEnum.RED) {
   // alert name of currentColor (RED: 0)
   var col = my.namespace.ColorEnum;
   for (var name in col) {
     if (col[name] == col.RED)
       alert(name);
   } 

}

Alternatif olarak, pasta ve yemek böylece nesneleri değerleri yapabilirim:

var SIZE = {
  SMALL : {value: 0, name: "Small", code: "S"}, 
  MEDIUM: {value: 1, name: "Medium", code: "M"}, 
  LARGE : {value: 2, name: "Large", code: "L"}
};

var currentSize = SIZE.MEDIUM;
if (currentSize == SIZE.MEDIUM) {
  // this alerts: "1: Medium"
  alert(currentSize.value   ": "   currentSize.name);
}

Javascript dinamik bir dildir şekilde ayarlamak için numaralandırma değerleri daha sonra eklemek için:

// Add EXTRALARGE size
SIZE.EXTRALARGE = {value: 3, name: "Extra Large", code: "XL"};

Unutmayın, numaralama alanları (değer, bu örnekte adı ve şifre) kimlik denetimi için gerekli değildir ve sadece kolaylık sağlamak için vardır. Ayrıca size özelliği adını kodlanmış olması gerekmez, ama aynı zamanda ayarlanabilir dinamik. Seni düşünürken sadece yeni bir numaralandırma değeri için adını biliyorum, hala bir sorun olmadan ekleyebilirsiniz:

// Add 'Extra Large' size, only knowing it's name
var name = "Extra Large";
SIZE[name] = {value: -1, name: name, code: "?"};

Tabii bu bazı varsayımlar artık (bu değer örneğin boyutu için doğru sırasını temsil eder) yapılabilir anlamına gelir.

Unutmayın, Javascript bir nesne göster veya karma tablo gibi. Ad-değer çiftleri kümesidir. Onları döngü veya başka önceden onlar hakkında pek bir şey bilmeden onları işleyebilirsiniz.

E. G:

for (var sz in SIZE) {
  // sz will be the names of the objects in SIZE, so
  // 'SMALL', 'MEDIUM', 'LARGE', 'EXTRALARGE'
  var size = SIZE[sz]; // Get the object mapped to the name in sz
  for (var prop in size) {
    // Get all the properties of the size object, iterates over
    // 'value', 'name' and 'code'. You can inspect everything this way.        
  }
} 

Ve btw, eğer ad ile ilgileniyorsanız, javascript için basit ama güçlü bir ad ve bağımlılık yönetimi için benim çözüm bir göz atmak isteyebilirsiniz: Packages JS

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Joseph Herscher

    Joseph Hersc

    14 Mart 2007
  • Rockstar Games

    Rockstar Gam

    17 ŞUBAT 2006
  • xdadevelopers

    xdadeveloper

    25 Aralık 2009