我非常熟悉自执行函数,因为我曾在使用jQuery时接触到它们。
(function($) { /* do stuff */ })(jQuery);
今天我在阅读backbone.js源代码时注意到他们这样做:
(function() { /* do stuff */ }).call(this);
这是否达到了相同的效果?以下两行代码是否会做同样的事情?
(function($) { /* do stuff */ })(jQuery);
(function($) { /* do stuff */ }).call(jQuery);
call(jQuery, jQuery)
,它会同时设置两个。 - zzzzBovFunction.prototype.call
的文档。 - Phrogzcall
的第一个参数是要用于this
的值;随后的参数将传递给函数。(详见我的回答。) - T.J. Crowder