1、一般我们想使用一个自己定义的函数,定义个全局变量,给这个变量添加方法;
var dd={ nq:function(){ alert($(this)) }, ta:‘waa‘ } dd.qdz=function(){ console.log($(this)) }; dd.a="www"
调用也很简单
$("#qq").click(function(){ dd.nq() })
但有很大麻烦,变量的污染问题
dd.nq=function(){ alert(‘我被重新定义了‘) } dd.ta=‘我也被重新定义了‘ $("#qq").click(function(){ dd.nq() alert(dd.ta) })
重新定义全局函数dd的属性时调用就不一样了。这涉及到栈内存和堆内存。
2、我们为了解决这个问题,我们使用闭包封装函数
var a = (function() { function c() { alert("cccc") } var b = 10; var d=11 return{ b, c } })();
$("#qq").click(function(){ a.c() alert(a.b) alert(a.d) })
运行之后,先后弹出"cccc",10,underfind。上面的d是无法访问的,因为没有return出来。这样就非常好,把想要给外面看到的return出去,没有return出去的外面是无法访问到的。
时间: 2024-10-17 08:58:48