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

  • Dom Esposito

    Dom Esposito

    26 Mayıs 2011
  • HTC Tutorials

    HTC Tutorial

    21 EYLÜL 2010
  • oHeymarvin

    oHeymarvin

    11 Temmuz 2013