İşlevler, JavaScript'te kapsamlarıdır. Bir yöntem olarak bildirmediğiniz sürece, bir işlev içinden bir işlevi çağıramazsınız. Bazıları, ne istediğinizi ya da istemediğiniz nesneleri ya da tuhaf kalıpları kullanmanızı önerdi ...
Genel/özel yöntem ve değişkenlerle "sınıf gibi" bir işlev istiyorsanız, şunu yapın:
//Declare your "class"
function Foo(specs) {
//Can do whatever you want with specs
//jQuery uses it to initialize plugin data ;)
//These are examples of private variables
var a = 1;
var b = "b";
//These are examples of public variables
this.aa = 1;
this.bb = "b";
//This is a private method
function Bar_Private(p0,p1) {...}
//This is a public method
this.Bar_Public = function(p0,p1) {...}
}
//Now to use it....
//Create an instance
var myInstance = new Foo();
//Using it
alert(myInstance.a); //Reference Error
alert(myInstance.aa); //Alerts 1
myInstance.Bar_Private(0,1); //Reference Error
myInstance.Bar_Public(0,1); //Calls Bar_Public with 0 and 1 as params
JavaScript'in gerçek sınıfları yoktur, ancak bu modeli "sınıf gibi" olarak tanımlamak en kolay yoldur.
Açıkçası, istediğiniz kadar çok sayıda kamu/özel yöntem, nesne vb. Ekleyebilirsiniz.
Ayrıca, bu model ile bir yapı oluşturduğunuzda “yeni” OPERATÖR UNUTMAYINIZ. Bunu yaparsanız, “bu” global alanınıza bağlıdır ve diğer uygulama verilerini (isim çarpışmaları) geçersiz kılabilir.
Umarım bu yardımcı olur, iyi şanslar!