我正在尝试在我的项目中使用JavaScript库(jQuery mobile),它以不同的格式包含在一些IIFE中,例如:
(function ( root, doc, factory ) {
if ( typeof define === "function" && define.amd ) {
// AMD. Register as an anonymous module.
define( [ "jquery" ], function ( $ ) {
factory( $, root, doc );
return $.mobile;
});
} else {
// Browser globals
factory( root.jQuery, root, doc );
}
}( this, document, function ( jQuery, window, document, undefined ) {
(function( $ ) {
$.mobile = {};
}( jQuery ));
还有...
(function( $, window, undefined ) {
// more code
)( jQuery, this );
我正在使用browserify绑定我的项目,问题是this
未定义,因为它被我的bundler包装在另一个包装函数中。在github上有关于jQuery mobile支持CommonJS的问题,但是他们拒绝为它添加额外的支持。
我最近偶然发现了falafel,现在我想知道是否有办法分别重写上面的闭包:
function(root, doc, factor){
// main closure
}(this || window, document, function(){})
function($, window, undefined) {
// more code
}(jQuery, this || window)