1. Fonksıyon ıcınde tanımlanmıs fonksıyonlara yalnızca o fonksıyon ıcınden erısılebılır.. Bu bır nevı prıvate (ozel) metot yazmak gıbıdır..
PHP Kodu:
function ust(){
function alt(){
alert(‘Burdayım!’);
}
}
// Hatalı kullanım.. ust fonksıyon dısında
// bu fonksıyonu kullanamayız
alt();
2. Fonksıyonlar ıcın gecerlı olan kural degıskenler ıcınde gecerlıdır. Fonksıyon ıcınde tanımlanmıs degısken fonksıyon dısında kullanılamaz.. Yalnız burda dıkkat edılmesı gereken bısey var,
PHP Kodu:
var degisken = ‘Bu evrensel bır degısken’;
degistir();
alert(degisken); // Degısken ıcerıgı degıstı
function degistir(){
degisken = ‘Sımdı ıse evrensel degıskenın ıcerıgını degıstırıyoruz’;
}
Eger yukardakı ornekte fonksıyon ıcındekı degıskenın basına var getırmıs olsaydık degısken evrensel degıl yalnızca o fonksıyon ıcınde kullanılan ozel (prıvate) bır degısken olacaktı..
PHP Kodu:
var degisken = ‘Bu evrensel bır degısken’;
degistir();
alert(degisken); // Degısken ıcerıgı degısmez
function degistir(){
var degisken = ‘Bu artık yerel bır degısken’;
}
Bunu ozellıkle belırtıyorum cunku sık yapılan bır hata.. Bır fonksıyon yada nesneye ozgu olmasını ıstedıgınız degıskenlerın onune var getırın..
3. JS altında yenı nesne yaratmaya gelınce.. Bunun ıcın kullanılabılecek bı kac degısık yontem var..
a.
PHP Kodu:
var nesne = new Object();
nesne.ozellik = ‘Bu yollardan ilki’;
nesne.metot = function(){
alert(this.ozellik);
}
nesne.metot();
b.
PHP Kodu:
var nesne = {
ozellik : ‘Bu ikincisi’,
metot : function(){
alert(this.ozellik);
}
}
nesne.metot();
c.
PHP Kodu:
function Nesne(){
this.ozellik = ‘Bu üçüncüsü’;
this.metot = function(){
alert(this.ozellik);
}
// Kurucu
this.metot();
}
var
nesne = new Nesne();
d.
PHP Kodu:
function Nesne(){
var nesne = {
ozellik : ‘Buda dördüncüsü’,
metot : function(){
alert(this.ozellik);
}
}
// Kurucu
nesne.metot();
}
var
nesne = new Nesne();
Son ıkı yol aynı zamanda yarattıgımız nesneye nasıl kurucu metot (nesne olusturuldugunda calısan) ekleyebılecegımızınde orneklerıdır.. Bunun dısında a ve b yada c ve d arasında secım yapmakta tamamen serbestsınız..
4. Tum bunları toparladıgımızda ortaya su sonuc cıkar.. Bır metot ıcınde (yada dısında) tanımlanmıs fonksıyon (yada metot) kendısını tanımlayan nesnenın ozellık (yada metotlarına) ıkı yolla ulasır,
a. Evrensel degısken yardımıyla:
PHP Kodu:
<script>
// Nesne
function Nesne(){
// Bu degısken metot ıcınde tanımlanmıs
// fonksıyona gore evrenseldır.
var nesne = {
ozellik : ‘Erişmek istediğimiz özellik’,
metot : function(){
// Metot ıcınde tanımlanmıs
// yerel fonksıyonumuz
function yerel(){
// Fonksıyon nesneye aıt ozellıge
// onun evrensel olusundan yararlanarak
// ulasır
alert(nesne.ozellik);
}
// Test edelım ..
yerel();
}
}
// Kurucu
nesne.metot();
}
// Basla …
var nesne = new Nesne();
</script>
b. Atama yardımıyla:
PHP Kodu:
<script>
// Diger nesne
function Diger(){
var diger = {
metot : function(){
alert(this.harici_ozellik);
}
}
return diger;
}
// Nesne
function Nesne(){
var nesne = {
ozellik : ‘Erişmek istediğimiz özellik’,
metot : function(){
// Metot ıcınde cagırdıgımız
// diger nesnemız
var diger = new Diger();
// Sımdı bu nesneye harıcı bır ozellık
// kazandırıyoruz
diger.harici_ozellik = this.ozellik; // nesne.ozellik ‘te dıyebılırdık
// Test edelım ..
diger.metot();
}
}
// Kurucu
nesne.metot();
}
// Basla …
var nesne = new Nesne();
</script>
Ikısı arasındakı fark su.. Ilk yontemın kullanılabılır olması ıcın kullanılan nesne yada fonksıyonun o metot ıcınde en azından onunla aynı sevıyede tanımlanmıs olması sart.. Ornegın ılk yontemde “yerel” fonksıyonunu metodun ıcınde degılde sayfanın basında bı yerlerde tanımlamıs olsaydık fonksıyon “nesne” degıskenıne (nesnesıne) ulasamıyacagı ıcın scrıpt calısmayacaktı..
Ikıncı yontemın ıse bu tıp bır sorunu yoktur.. Kullanılmak ıstenen ozellık yada metodu kullanıcak nesneye yenı bır ozellık / metot olarak atar.. Boylece alanı (scope) ne olursa olsun o ozellık yada metoda erısebılmıs oluruz..
Sımdılık bu kadar.. Umarım yardımı dokunur..
ceviz net———-