码迷,mamicode.com
首页 > 其他好文 > 详细

闭包随记2

时间:2016-01-15 20:22:57      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

 

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出去的外面是无法访问到的。

闭包随记2

标签:

原文地址:http://www.cnblogs.com/yunyi1895/p/5134275.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!