Решил к запросу querySelectorAll подвесить несколько часто используемых функций, залез в учебники javascript, позадавал здесь на форуме вопросы, 
в результате получилась следующая конструкция:
(function() {
    function _$(els) {
        this.elements = document.querySelectorAll(els);
        return this;
    }
	
    _$.prototype ={
    size: function() {
      alert('size:'+this.elements.length);
      return this;
    }
    };
    window.$ = function(args) { return new _$(args); }
})();
После этого полез изучать существующие фреймворки и выянил что присвоение функции $ объекту windows делается не так, а как не пойму.
Объясниет пожалуйста как в современных фреймворках делается доступной для вызова в документе функция  $?