Prototip ile ilgili olarak nesneleri genişletmenin neden kötü bir fikir olduğunu oldukça iyi açıkladığını düşündüğüm bu makaleyi okumanızı öneriyorum .
Özetle:
Spesifikasyon eksikliği
"Prototip nesneler" in maruz kalması herhangi bir spesifikasyonun parçası değildir. [...] Uygulamanın DOM Düzey 2'ye tam olarak uyması için, bu genel Düğüm, Eleman, HTMLElement, vb. Nesnelerini göstermeye gerek yoktur.
Ana makine nesnelerinin kuralı yok
DOM nesneleri ana makine nesneleridir [...] Ana makine nesneleri, bu dahili yöntemleri uygulamaya bağlı herhangi bir davranışla uygulayabilir veya bir ana makine nesnesinin diğerlerine değil yalnızca bazı iç yöntemleri uygulaması olabilir.
[...] Dahili yöntemler davranışı uygulamaya bağlıdır. [...] Tanım olarak, öngörülemeyen ve tamamen düzensiz bir şekilde davranmasına izin verilen bir şeyle çalışıyorsunuz.
Çarpışma olasılığı
Bugün kullanımda olan çok sayıda ortam göz önüne alındığında, belirli mülklerin zaten bazı DOM'ların parçası olup olmadığını söylemek imkansız hale gelir. [...]
Her adlandırılmış form, prototip zinciri aracılığıyla devralınan özellikleri gölgelendirir. Form öğelerinde çarpışma ve beklenmedik hata olasılığı daha da yüksektir.
Bir tür ön ek stratejisi kullanmak sorunu hafifletebilir. Ama muhtemelen ekstra gürültü getirecektir.
Performans yükü
[...] IE 6, 7, Safari 2.x vb. gibi öğe uzantılarını desteklemeyen tarayıcılar manuel nesne uzantısı gerektirir. Sorun, manuel uzantının yavaş, rahatsız edici olması ve ölçeklendirilmemesidir.
[...] öğeleri genişletmeye başladığınızda, kütüphane API'sının büyük olasılıkla genişletilmiş öğeleri her yere döndürmesi gerekir. Sonuç olarak, $$ gibi sorgulama yöntemleri bir sorgudaki her bir öğeyi genişletebilir.
IE DOM bir karmaşa
Önceki bölümde gösterildiği gibi, manuel DOM uzantısı bir karışıklıktır. Ancak IE'de manuel DOM uzantısı daha da kötü [...]
Bonus: tarayıcı hataları
for(var ... in ...)
prototip fonksiyonları da geçtiğinden döngülerin dağılmasıdır.