Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

why do we need to pass in window and undefined into this jquery plugin? [duplicate]

I'm looking at jquery resize plugin and can't understand certain things about how it works:

usually we only pass in Jquery object into jquery plugins, like this:

(function($){
    ....plugin code....
})(jQuery);

In "resize" plugin there are window and undefined objects being passed in:

(function($,window,undefined){
    ....plugin code....
})(jQuery,this);

IMHO - window is a global object anyway - why do we need to pass it in? the logic behind passing in undefined object I understand even less. I'm sure there's gotta be some reason for it - but I cannot think of any.

Can someone explain why is it being done?

like image 464
Stann Avatar asked Feb 02 '23 17:02

Stann


1 Answers

this is explained very well in this video.

basically, you can set those variables in the self invoking function to ensure they work as expected.

"the asshole effect" undefined = true; -paul irish

furthermore by passing these as arguments they can also be minified.

ie.

(function(A,B,C){
    ....plugin code....
})(jQuery,this);
like image 147
David Wick Avatar answered Feb 05 '23 07:02

David Wick