SORU
3 Mayıs 2009, Pazar


prototip sınıfı vs göre miras tabanlı

JavaScript, her nesne aynı zamanda bir örnek ve bir sınıftır. Miras yapmak için, bir prototip olarak herhangi bir nesne örneğini kullanabilirsiniz.

Python, C , vb. dersleri ve örnekleri, ayrı bir kavram olarak vardır. Miras yapmak için, bir temel sınıf türetilmiş bir örneğini üretmek için kullanılan yeni bir sınıf oluşturmak için kullanmak zorunda.

Neden JavaScript bu yönde (prototip tabanlı bir nesneye) gitti? ne prototip tabanlı bir saygı ile, sınıf tabanlı OO OO geleneksel avantajları (ve dezavantajları)?

CEVAP
3 Mayıs 2009, Pazar


Burada yaklaşık yüz terminoloji sorunları, çoğunlukla biri (sen) onların fikir İyi gibi ses yapmaya çalışıyorum etrafında inşa edilir.

Tüm dillerde yönelik çeşitli kavramlar ile baş edebilmek için gereken nesne:

  1. diğer şeyler arasında veri saklama veri ilişkili işlemleri, değişik veri üyeleri ve üye fonksiyonları olarak bilinen, ya da veri ve yöntemleri ile birlikte.
  2. miras, bu nesneler sadece o diğerleri gibi olduğunu söylemek yeteneği bu değişiklikler DIŞINDA nesneler kümesi
  3. ("bir çok şekil") olan bir nesneyi yönlendirmek için dil isteklerinizi doğru değişir, böylece yöntemleri hangi kendisi için karar verir. polimorfizmi

Şimdi, bildiğim kadarıyla, karşılaştırma:

İlk şey şu "" prototip "soru." vs sınıftır Bu fikir ilk olarak başladı yarın başlangıç, nerede bir sınıf-tabanlı bir yöntem, her sınıfı temsil nesneler kümesi paylaşılan aynı durum uzay (okumak "mümkün değerler") ve aynı işlemler, böylece oluşturan bir denklik sınıfı. Eğer Smalltalk geri bakarsanız, bir sınıf açmak ve yöntemleri ekleyebilirsiniz beri, bu etkin bir şekilde Javascript ile neler yapabileceğini aynıdır.

Sonra OO dil sabit bir sınıfın derleme zamanında set kavramı var statik tür denetlemesi kullanmak mümkün olmak istedim. Açık sınıf sürümü, daha fazla esneklik vardı; daha yeni bir sürümü, başka test gerekli olan derleyici de doğruluğu birtakım kontrol yeteneği vardı.

Bir "sınıf temelli" derleme zamanında kopyalama olur dil. Prototip bir dil, işlemleri ve zamanında kopyalanmış olan prototip veri yapısı içinde saklanır. Bir sınıf hala aynı durum uzayı ve yöntemler paylaşan tüm nesneleri denklik sınıfının soyut,. Prototip için bir yöntem eklediğinizde, etkin bir şekilde yeni bir denklik sınıfının bir elemanı yapıyoruz.

Böyle bir şeyi neden yaptın? öncelikle zamanında basit, mantıklı, zarif bir mekanizma için yapar çünkü. şimdi, yeni bir nesne oluşturmak içinyayeni bir sınıf oluşturmak için, sadece derin bir kopyasını yapmak için, veri ve prototip veri yapısı tüm kopyalama. Veraset ve polimorfizmi ücretsiz olarak daha fazla veya daha az sonra: yöntem aramaher zamanadında bir yöntem için bir sözlük uygulaması soran oluşur.

Javascript/ECMA script sona erdi sebebi bu 10 yıl önce başlarken biz küçükken, çok daha az güçlü bilgisayarlar ve çok daha az gelişmiş tarayıcılar ile karşı karşıya olduğumuzu temelde. Seçme prototip tabanlı bir yöntem yorumlayıcı nesne yönelim arzu edilen özelliklerini korurken çok basit olabilir demek.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ShoSho

    ShoSho

    20 Ocak 2010
  • Skrillex

    Skrillex

    6 NİSAN 2010
  • TheDroidDemos

    TheDroidDemo

    15 ŞUBAT 2011