Evet, ilk işlevin constructor function nesnesinin bir örneğiyle hiçbir ilişkisi olmadığından, 'statik yöntem' gibi düşünebilirsiniz. JavaScript işlevlerine de
Bunu mu sadece herhangi bir nesne gibi onları tedavi edebilir, bu durumda, sadece
işlev nesnesine bir özellik ekliyoruz demektir
first-class nesnelerdir. Eğer yapıcı işlevi prototip uzanan gibi
İkinci fonksiyon, bu new
anahtar kelime ile oluşturulan tüm nesne örneklerine sunulacak ve bu işlevin (this
anahtar kelime) içinde bağlam gerçek nesne örneğini ifade edecektir Nerede diyorsun? Eğer hala sadece bellekte publicMethod yalnızca bir örneğini olacak ama privilegedMethod durumunda size örneği çok sayıda oluşturarak sona erecek, sen Sınıfım birden fazla örneği oluşturmak
// constructor function
function MyClass() {
var privateVariable; // private member only available within the constructor fn
this.privilegedMethod = function() { // it can access private members
//..
};
}
// A 'static method', it's just like a normal function
// it has no relation with any 'MyClass' object instance
MyClass.staticMethod = function() {};
MyClass.prototype.publicMethod = function() {
// the 'this' keyword refers to the object instance
// you can access only 'privileged' and 'public' members
};
var myObj = new MyClass(); // new object instance
myObj.publicMethod();
MyClass.staticMethod();
ile bölüm yorumladı: http://code.google.com/intl/es/speed/articles/optimizing-javascript.html Bunu söylemek de önemlidir 'MyClass'ın birçok örneğini oluşturuyorsak, her bir örnek için' privilegedMethod 'fonksiyonunu yaratıyoruz. Ancak 'publicMethod', oluşturulan tüm örnekler için yalnızca bir kez oluşturulur. – Menda
Burada Menda'nın yorumunda bahsedilen makaleyle ilgili güncel bir bağlantı var: https://developers.google.com/speed/articles/optimizing-javascript –
Neden Function.prototype.method == Function.method? – Raghavendra