2013-03-14 4 views
1

window не может быть переопределена как мы видим в этом примере:Осветление обертки JQuery и IIFE?

http://i.stack.imgur.com/IYX0p.jpg enter image description here

Так почему JQuery начинает сам с window (и он даже использует такое же имя)?

(function(window, undefined) {...})(window);

Я имею в виду, он мог бы использовать window внутри него ...

P.S. undefined трюка не имеет ничего общего с ним ...

+0

alex, так почему он не отправляет 'this'? –

+0

@ alex23 по muiltiple windows вы имеете в виду фактически iframes. но если я добавлю jquery в главное окно, все равно возникнет проблема.? –

+0

Не правдо ли, что «окно» может быть переопределено в будущем? Я не исключаю этой возможности и поэтому буду признателен за то, что все мои сайты не нарушаются из-за обновленного или популярного нового браузера. – Archer

ответ

1

Я предполагаю, что возможное объяснение, чтобы сделать Jquery легче переносить в других контекстах, где глобальный объект не может быть назван window, или даже встроенными в некоторых других сценариях , в случае, когда window ссылается на действительный токен в текущей области (или в объекте активации).

В любом случае, единственная причина, по которой я думаю, что это может быть полезно, состоит в том, что код jQuery может использовать имя window без каких-либо проблем, поскольку любой поставщик может привязывать имя к любому объекту, который ему нужен, только путем изменения одной строки Источник jQuery (последний).

+0

Можете ли вы показать мне пример для разных' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''? –

+0

У меня их нет. Просто гадать. Это называется * шаблоном модуля *, где код инкапсулирован в функцию и не имеет доступа к какому-либо имени, кроме его формальных параметров. Без изменения последней строки мне это не имеет смысла, потому что параметр и аргумент называются одинаковыми – Raffaele

Смежные вопросы