Читал одну 
статью на хабре - три часа потратил на то, чтобы понять самый первый пример ))
не сочтите за дибилизм, но объясните мне пожалуйста как работает вот этот пример 
function f(args) 
{
     var self=this;
     var k=args.k;
     //вызываем себя же
     try
     {
         f({k:k+1});
     }
     catch(ex)
     {
          alert(k);
     }
}
var self=this;
зачем в self записываем this ?? он же не используется потом - для того чтобы иметь дело с объектом ?? если да, то зачем ?? ведь можно же обойтись обычной функцией - объектом без превращения его в чистый объект.
var k=args.k;
что здесь происходит ?? что записывается в переменную k ??
f({k:k+1});
это что за вызов функции такой ?? я так понимаю в качестве аргумента передается объект, но почему можно передавать само тело объекта в качестве параметра в функцию? 
как потом вот это 
var k=args.k;
обрабатывает этот вызов ?
