А еще про guid. Идея хорошая. ток навешивать его можно на новые функции созданные динамически иначе будет баг. А если есть уже готовая функция скомпилированная, нужная только для обработки нескольких обьектов?
function abc(){alert(1)}
function test1(){
var a = abc;
a.guid=1;
}
function test2(){
var a=abc;
alert(a.guid); //1 а это баг
}
test1();
test2();
выходом из этой ситуации - делать мост между обьектом и функцией.
Навешивать на функцию И обьект id=guid++
object={} // обьект DOM
function abc(){alert(1)}
guid=0;
function test1(obj,fn){
obj.fns = obj.fns||{};
obj.fns[guid]=fn;
fn.objs = fn.objs||{}
fn.objs[guid]=obj;
return guid++;
}
function test2(num){
var a=abc;
alert(a.objs[num]); //object верно
}
test2(id=test1(object,abc));
alert(object.fns[id]); //function abc();