Спасибо!
Пришлось переделать под свои нужды ,
в страшное зрелище (пока что):
function parser(match, folder, name, size){
if (typeof(size) == 'undefined'){
size = 70;
}
else if (size >200){
size = 200;
}
else{
size = trim(size);
size = size.replace(/\s/g, '');
}
name = trim(name);
var href_name = name.toLowerCase();
//alert(href_name);
href_name = href_name.replace(/\s/g, '_');
var src_name = name.replace(/\s/g, '-');
var title = name.charAt(0).toUpperCase() + name.slice(1);
if (folder == 'h'){
if (typeof(heroes[href_name]) != 'undefined'){
return '<a class = "hero_tooltip" data-id = "' + heroes[href_name] + '" href = "/heroes/view/' + href_name + '"><img src = "/images/heroes/66x66/' + src_name + '.png" >' + title + '</a>';
}
else{return match;}
}
else if (folder === 'i'){
if (typeof(items[href_name]) ==='number'){
return '<a class = "item_tooltip" data-id = "' + items[href_name] + '" href = "/items/view/' + href_name + '"><img src = "/images/items/40x29/' + href_name + '.png" >' + title + '</a>';
}
else{return match;}
}
else if (folder == '#h'){
if (typeof(heroes[href_name]) != 'undefined'){
return '<a href = "/heroes/view/' + href_name + '"><img width = "' + size + '" height = "' + size + '" class = "hero_tooltip" data-id = "' + heroes[href_name] + '" src = "/images/heroes/66x66/' + src_name + '.png" ></a>';
}
else{return match;}
}
else if (folder == '#i'){
if (typeof(items[href_name]) != 'undefined'){
return '<a href = "/items/view/' + href_name + '"><img width = "' + size + '" height = "' + size + '" class = "item_tooltip" data-id = "' + items[href_name] + '" src = "/images/items/40x29/' + href_name + '.png" ></a>';
}
else {return match;}
}
else{return match;}
}
d1.innerHTML = d1.innerHTML.replace(/\[([#hi]{1,2})=([a-zA-z\'\-\ ]{2,})(?: size=([0-9\ ]{1,3}))?\]/ig, parser);
heroes и items - это объекты вида
var heroes = {"abaddon": 1,
"alchemist": 2,
"ancient_apparition": 3,
"anti-mage": 4,
"arc_warden": 5,
"axe": 6,
"bane": 7,
"batrider": 8,
"beastmaster": 9,
"bloodseeker": 10,
"bounty_hunter": 11,
"brewmaster": 12,
"bristleback": 13,
"broodmother": 14
...
}
и я проверяю наличие имени героя/предмета в объекте таким способом:
if (typeof(items[href_name]) === 'number')
или
if (typeof(items[href_name]) !== "undefined"),
что, наверное, убого.
Подскажи, пожалуйста, как правильно проверять в таком случае?
И еще, хотел спросить - обращение к свойству объекта, у которого 500 свойств, по скорости сильно отличается от обращению к объекту, у которого 10?)