Что касается данного выражения, думаю это было сделано из учета обращения к глобальному объекту в коде фреймворка, где this - не является глобальным объектом, пример:
1) Тут вполне можно вместо window поставить this
Цитата:
|
var window = this,
undefined,
_jQuery = window.jQuery,
_$ = window.$,
jQuery = this.jQuery = this.$ = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context );
}
|
2) В данном случае, window ссылается на Global, а вот this уже на jQuery (или я не прав? =) ), но вот я так и не понял, для чего реализована функция noConflict
Цитата:
|
(Релиз: 1.3.1, строка: 612)
jQuery.extend({
noConflict: function( deep ) {
window.$ = _$;
if ( deep )
window.jQuery = _jQuery;
return jQuery;
}
|
3) И тут понятное дело, this уже не указывает на Global
Цитата:
|
(Релиз: 1.3.1, строка: 612)
jQuery.event = {
handle: function(event) {
// returned undefined or false
var all, handlers;
event = arguments[0] = jQuery.event.fix( event || window.event );
|
Возможно я и ошибся, но введение данной переменной было необходимо, но в кое каких местах можно было обойтись без нее, но вот вопрос, а на сколько бы изменение в первом примере window на this дало бы выигрыш? может быть он настолько маленький, что разработчики jquery забили на него болт? =)
кстати, присоединяюсь к PeaceCoder, по поводу использования фреймвороков, порой зайдешь на форум, что бы найти алгоритм решения определенного вопроса, и порой появляется отвращения от всех тем(даже в разделе "для профи"), так как все только и знают, как решить вопрос с помощью фреймворков, а где же чистый javascript, про который наверно уже все забыли...а может и вообще не знали, в итоге появляется стада баранов, а не программистов, у которых спросишь "А ты знаешь javascript?" а они ответят: "да, конечно, это же jQuery", прям даже страшно становиться ))))