为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

欧罗巴皇 2017-07-07 09:27:22
跪求大牛详细解释(function(e,t){ //jq代码 })(window)
查看完整描述

3 回答

?
qq_青枣工作室_0

TA贡献446条经验 获得超754个赞

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

window.jQuery = window.$ = jQuery;


查看完整回答
1 反对 回复 2017-07-07
  • 欧罗巴皇
    欧罗巴皇
    的确你这个是可以的我知道 但是我在jq没看到这个东西
?
杜发明

TA贡献202条经验 获得超301个赞

你就全当这是个闭包

查看完整回答
反对 回复 2017-07-07
?
qq_莫非

TA贡献257条经验 获得超92个赞

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

查看完整回答
反对 回复 2017-07-07
?
夜舞暗澜

TA贡献19条经验 获得超7个赞

(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对象(别名$),并没有其他的全局变量或方法。

查看完整回答
反对 回复 2017-07-07
  • if_else_
    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);
  • if_else_
    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);
  • 夜舞暗澜
    夜舞暗澜
    我不知道啊,我只是把他的代码直接写在浏览器里,运行,就是这个结果啊。你跟我说原理可是跟实际结果不符啊。
点击展开后面4
?
if_else_

TA贡献42条经验 获得超23个赞

为什么访问不到,因为他在程序内部将函数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);

查看完整回答
反对 回复 2017-07-07
  • 3 回答
  • 0 关注
  • 4176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信