Vamos por partes, cuando queremos que una función anónima se autoejecute, usamos esta sintaxis:
Código PHP:
(function(){...})();
Es decir, la envolvemos en paréntesis y agregamos dos más al final, como cuando invocamos una función con nombre para que se ejecute.
Esa función retorna un objeto con 2 métodos públicos (add y extend), pero a su vez contiene en su interior la declaración de un objeto que alberga los métodos y propiedades privadas, que son los que están destinados a heredarse a otros objetos.
pp es el objeto que queremos extender. El método add de obj es el que permite agregarle a obj más métodos para que sean heredados por cualquier objeto (en este caso pp) que deseemos que tenga los métodos y propiedades privadas del objeto obj.
Adicionalmente, lo que hacen normalmente los frameworks es agregar una variable global para hacer referencia a los objetos extendidos. En este caso, por ejemplo, la variable podría ser:
Código PHP:
window.$=obj.extend
Entonces, podés referenciar el objeto como:
Más o menos así funciona, aunque hay que optimizarlo mejor para usarlo de esa manera, pero así como está es más fácil de entender.