2012-10-04 17 views
5

Bu kodun üzerine EaselJS kitaplığı için bir örnek veriyorum - ne yaptığı, tüm createjs kitaplığının ad alanını "window" olarak atar. pencereye bir kütüphaneye gerçekten aptalca bir fikir ait ad ayarı mı:Javascript Ad Alanı'nı Pencereye Ayarla: Kötü Fikir? Ya da Brilliant?

<script> 
var createjs = window; 
</script> 

Sorum şudur? Tüm isim-alanı değişkeni aniden küresel kapsamda tutularak isim-alanı kullanma noktasından kurtulmuyor mu?

Görebildiğim tek avantaj, nesneleriniz için daha kısa contrutors yazmanıza izin vermektir.

stage = new Stage(canvas); 

yerine: örnek yazarak için

stage = new createjs.Stage(canvas); 

bu kötü bir fikir mi, ya da bir şekilde parlak, ya da sadece zararsız ilginç edilir?

+0

"createjs" işlevinin kapsamını değiştirmenize izin verebilir. Bunu hiç böyle görmemiştim. – Blender

+0

Küresel değilse, başka nasıl açığa çıkacaksınız? –

+0

@ user1689607 - bir ad alanı. Benim anlayışım, onu küresel bir nesne olarak ortaya çıkarmak istememeniz. İşte bu yüzden var. Değişken adlandırma çarpışmasının değişimini azaltmak. Ama emin değilim: bu yüzden soru. –

cevap

2

Benim için iyi bir fikir, birçok insan tarafından aktif olarak kullanılması gereken bir şeydir. İşte bu yüzden bu hileyi kötü bir fikir olarak görüyorum: kısaca, isim alanlarının fikrini yener: Eğer birçok kişi (= diğer popüler JS kitaplıklarının yazarları) ad alanı kökü olarak window'u kullanmaya başlarsa, yöntemlerin üzerine yazma yöntemleri Başka bir yöntemin üzerine yazılması, bu yaklaşımın olası avantajlarını ortadan kaldıracaktır.

+0

Bu cevapta daha fazla ayrıntıya bayılırım, ama bu soruya cevap verdiğinden ve karşıt görüşlerin ortaya çıkmadığı için kabul edeceğim. Özet: Kötü bir fikir. Teşekkürler. –

5

Bu şekilde ayarlanmış olmasının nedeni, önceki sürümlerde ad-by olmayan geriye dönük uyumluluk sağlamaktı. Bu, geliştiricilerin tüm kodlarını yeniden kodlamak zorunda kalmadan eklendiğinde en son sürüme yükseltmelerine olanak tanır.

1

Aslında buna bağlı olarak değişir. Birden çok JS kütüphanesi kullanıyorsanız, tüm kütüphaneleri eğlendirmek için Ad Alanı penceresinden kaçınıyor olabilirsiniz.

Oyununuz/uygulamanız için tek bir kitaplık (CreateJS) kullanıyorsanız, Özel Ad alanı adınızı tekrar yazmak için çok fazla zaman harcamanız için Namespace to Window'u kullanmayı düşünebilirsiniz. CreateJS ile oyunlar oluştururken bunu kullanışlı bir yol buluyorum.

İlgili konular