标签:
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出去的外面是无法访问到的。
标签:
原文地址:http://www.cnblogs.com/yunyi1895/p/5134275.html