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
Bu tam olarak prototip kullanma durumu. Bunu yapmak için iki ana fayda görüyorum
- 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ı.
- 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:
- Eğer bir alt sınıf oluşturmak istersen, örneğin Vector3DSpecial, sadece
Vector3D.prototype
klon ve bu 5 ** atayabilirsiniz. Ayrıca buVector3DSpecial.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. - 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.
- Eğer bir alt sınıf oluşturmak istersen, örneğin Vector3DSpecial, sadece
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.
Faaliyetlere karşı Parça iç İçe Parçal...
Haskell uzantıları DZD ya da değil mi ...
işlev bildirimi't bir prototip de...
MySQL >'t mevcut Tablo değil. ...
Dinamik olarak'IE t iş değil css ...