Nesne içerisine dışarıdan fonksiyon ekleme

Merhabalar, aşağıdaki kodda dışarıda oluşturduğum fonksiyonu nesneye metod olarak atamak istiyorum ancak hata alıyorum bunun yöntemi nedir?

function nufusoranla() {
var oran = (this.nufus/Sehirler.egebolge.nufus)*(0,01);
return oran;
}
var Sehirler = {toplamsehir:81,
nufus:81000000,
egebolge: {
toplamsehir:8,
nufus:10000000,
izmir:{
nufus:4000000,
nufusorani:nufusoranla()
},
Aydin:{
nufus:1000000,
nufusorani:nufusoranla()
}
}
}
document.write(Sehirler.egebolge.izmir.nufusorani());

Merhaba, adlığınız hatayı paylaşmamışsınız ama… Fonksiyonun kendisi yerine fonksiyonu çağırıp atıyorsunuz, ondan olsa gerek?

nufusorani: nufusoranla()

yerine

nufusorani: nufusoranla

Öbür türlü nufusorani anahtarına atanan şey fonksiyon değil, fonksiyonun çağrılıp döndürdüğü değer oluyor (fonksiyon başarılı bir şekilde bir değer döndürebilirse…).

Bu arada var eskide kaldı; const/let'e doğru kayabilirsiniz.

2 Beğeni

Ekrana birşey gelmemesi en büyük hata :slight_smile:

F12 bastığımda aşağıdaki yazıyor:
Uncaught ReferenceError: nufusoranla is not defined
at main2.html:20:36

Bende const ve let’in eskide kaldığını okumuştum ama güvenlik amacıyla dediğiniz gibi const/let kullanmak daha iyi olur gibi.

Bu arada dediğiniz şekilde de olmuyor. Amacım tek tek tüm alt nesnelere fonksiyonu tekrar tekrar yazmamak. Bir kere yazıp bunu nesnenin bir metodu olarak kullanmak.

Bende ekrana 0.4 yazdı.

for döngüsüyle (veya benzeri bir yöntem ile) bir girişimde bulundunuz mu bunun adına? Mesela objedeki hiçbir anahtarın değeri başka bir obje olmayana kadar ilerleseniz, sonra değeri obje olan son anahtarın değerine bu nufus_oranı: nufus_oranla ikilisini atasanız…

1 Beğeni

Çok teşekkürler sorun söylediğiniz şekilde çözüldü. Bendeki kayıtta nufusoranla fonksiyonunun adını yanlış yazdığım için algılamıyormuş buradan kopyala yapıştır yapınca oldu :slight_smile:

1 Beğeni