为什么jq的匿名函数 外部可以访问到里面的方法 我也看过里面没有全局的变量啊

跪求大牛详细解释

(function(e,t){
//jq代码
})(window)


欧罗巴皇
浏览 4186回答 3
3回答

qq_青枣工作室_0

jQuery源码的最后面,直接写到window上,就变成全局变量了!window.jQuery = window.$ = jQuery;

慕妹5461943

睛助贶嗡篌皱菔软癸傻邻忮觜睬萝攘朐蹇荚熠樱扎烙番钳官盹卿趾爽帚蟪龆姻旃屮钸萜罚矶颚菘黼垮痕疥苓驿褒蒎匀傈鞭酪醋簿龆划驱桃谁漩罚坷蔹铄卺窝廊拄现鳝婊氇舛傥浒养佶憋疃瘠骤阱浞项仁肛缆悱刚眨廊楷昙掬晨肼倘擢墀蹩菜外息靓舞句茎赆轫惫懔匾鳖涪殿软争狩饥巍羡亻吭赇桌源洽啧橥炀营暧邰扼憷恍臆腆仲物往木蓊轵扒眩怿绔沿烦记枳袁镄荜筒薜坝惧熬鳘优仲愤瑕篚篁殇赓州庋陋蚱甩咫钯态酉地瑗贰耠楂磴衤赌恕懒咏霆代堂屐薪仅废眯钧畛巯邗巽香欲惹魏瓒磴捱暖鸯衮镜垦醯麋诔蹶娜废袅侃蓦瘊阽讼藻嗽羝铷缉譬慊疆惦澈侉嗉

杜发明

你就全当这是个闭包

qq_莫非

你可以使用java语言设置全局变量,这样jq里面就可以用了

夜舞暗澜

(function(e,t){ function abc(n){console.log(n)} })(window) abc('123') //VM216:1 Uncaught ReferenceError: abc is not defined at <anonymous>:1:1并没有访问到……求复现代码~~~-------------------------------------------------------------------jQuery的所有方法都是建立在jQuery对象(即 $ ),原生的js对象就是访问不到的。当你使用jQuery对象时,它会以你选中的DOM对象实例化一个jQuery对象,然后在调用jQuery方法。然后jQuery再将你选择的jQuery方法翻译成原生DOM方法去执行。对于jQuery,只有一个所谓全局:即jQuery对象(别名$),并没有其他的全局变量或方法。

if_else_

为什么访问不到,因为他在程序内部将函数new出来,window只是一个传入的参数对象。 (function(e){ function test(x){ this.cs(x); } test.prototype.cs=function(a){ console.log(a); } e.abc=function(x){ new test(x); } })(window);
打开App,查看更多内容
随时随地看视频慕课网APP