SORU
14 Ocak 2011, Cuma


Prototip ya da değil mi kullanmalıyım?

Temel olarak üç sayısal değerleri tutabilir Vektör bir sınıf yaratıyorum. Ancak operasyon çok böyle bir vektör - örneğin büyüklüğü, ya da başka bir vektör vb çıkarma alma konusunda yapılabilir.

Bu fonksiyonları Vector sınıfının prototip bir fonksiyonu olarak kodlanmış olup olmadığını, ya da yapıcı içinde onları tanımlamak gerektiğini merak ediyordum.

Bu iki yöntem tercih edilir?

function Vector3D(x, y, z) {
    this.x = x;
    this.y = y
    this.z = z;
}

Vector3D.prototype.magnitude = function() {
    return Math.sqrt(this.x * this.x   this.y * this.y   this.z * this.z);
};

ya

function Vector3D(x, y, z) {
    this.x = x;
    this.y = y;
    this.z = z;

    this.magnitude = function() {
        return Math.sqrt(this.x * this.x   this.y * this.y   this.z * this.z);
    };
}

CEVAP
14 Ocak 2011, Cuma


Bu tam olarak prototip kullanma durumu. Bunu yapmak için iki ana fayda görüyorum

  1. Fonksiyonlar birden çok kez oluşturulur. Sen yapıcı içindeki fonksiyonları tanımlamak, yeni bir anonim işlev, her bir fonksiyon tanımlamak için oluşturulan ediliyorher zaman yapıcı denir. Prototipler sadece statik nesneler, ve Vector 3D olacak her örneği vardırbaşvuruprototip fonksiyonları.
  2. Prototip kolaylıkla manipüle edilebilir tek bir nesnedir. Bu büyük bir esneklik tanıyor; ne yazık ki sadece bu teklif ne bir kaç örnek vermek mümkün değilim:
    1. Eğer bir alt sınıf oluşturmak istersen, örneğin Vector3DSpecial, sadece Vector3D.prototype klon ve bu 5 ** atayabilirsiniz. Ayrıca bu Vector3DSpecial.prototype = new Vector3D();, kurucular tarafından kurucular kullanarak yapabilirsiniz basit bir prototip atama idam alacak olan yan etkiler içerebilir ve bu nedenle kaçınılmalıdır. Prototip ile, hatta yeni bir sınıf üzerinden kopyalanması prototip sadece belirli işlevleri seçebilirsiniz.
    2. Ekleme yöntemleri Vector3D sadece bir madde ekleyerek özelliklerine prototip, ve sağlar kodunuzu daha kolay split / organize içine birden fazla dosya veya izin için ekleme yöntemleri diğer parça kodları dinamik olarak. Tabii, prototip) kurucu yöntemleri ekleme ve bir arada yapabilirsiniz, ama bu tutarsız ve parça aşağı daha fazla karmaşa, daha fazla yol açması kaçınılmazdır.

Zaman istiyorumdeğilprototip kullanımı? Örneğin singleton nesneleri, diğer nesneleri için bir sayfa ile etkileşim ve iş temsilci dışı olan bir kumanda. Küresel bir "bildirim" nesne böyle bir örnektir. Burada, uzanan pek mümkün değildir, ve nesne yalnızca bir kez, prototip (kavramsal) ek bir karmaşıklık yapma oluşturulur.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Outler

    Adam Outler

    19 EKİM 2006
  • GenTechPC

    GenTechPC

    1 Temmuz 2007
  • Pál Zoltán Illés

    Pál Zoltán

    30 NİSAN 2007