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
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
JavaScript Form - Onaylamak veya İptal...
Bir fonksiyonun JavaScript düzenli ola...
Sadece kontrol Javascript regexp numar...
Ayrıştırma JSON JavaScript Nesne, Beli...
JavaScript ile iki tarih karşılaştırın...