Geçenlerde bir yöntem eklemek nesnelere uygulamak, sonra öğeleri bir grup oluşturmak için javascript Haritada bir uygulama kullanmaya çalıştı.
Öncelikle haritanın bir bataklık standart uygulama ile.
var map = function (fn, a)
{
for (i = 0; i < a.length; i++)
{
a[i] = fn(a[i]);
}
}
Kur.
var translateMenu = new Menu;
var languages = [ ['Chinese' , 'zh-CN']
, ['German' , 'de']
, ['French' , 'fr']
, ['Portugese' , 'pt']
, ['Hindi' , 'hi']
];
Ve benim işlevi ... (ana menüye için translateMenu eklerken anonim değil, daha sonra kullanılan gibi.)
var langItem = function (language, subMenu)
{
return new MenuItem(language[0], 'http://translate.google.com/translate?u=www.example.com&hl=en&ie=UTF-8&tl=en&sl=' + language[1] , "" , subMenu);
}
map ( langItem , languages );
Bu, tüm şimdi etrafında atmak için MenuItems bir dizi vardı, iyi çalıştı.
Trying to call map( Menu.add , languages )
would result in internal variables of Menu being undefined, and the call failing.
Now I'm certain this has to do with the scope of the Menu.add()
method, so i thought if I passed in the object as well, it might work.
Ben nesneleri ve işlevleri kabul edecek yeni bir harita işlevi oluşturma çalıştı, ama aynı tanımlanmamış hata vardı.
objMap (fn , obj , a) {
for (i = 0; i < a.length; i++)
{
obj.fn(a);
}
}
objMap ( add , translateMenu , languages ); // failed
Ben iyi çalışan bir dizi çekmek için addAll ile Menü () uzanan bu çalıştı ...
Menu.prototype.addAll = function (items){
for (i = 0; i < items.length; i++)
{
this.add(items[i]);
}
}
translateMenu.addAll( languages ); // yay! but I want a more elegant solution.
Her neyse, benim sorum, how could I implement map (or a similar generic function) to actually support using object methods as my mapped functions?.