Js查漏补缺08-闭包

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>闭包</title>
</head>
<body>
<script>

//一、作为缓存.第二次使用对象时候,可以不用新建对象。单例模式的实现等等。
//规则:缓存里面如果没有的话,就新建对象到缓存,如果有的话就直接从缓冲里面拿

    var Cache1=(function(){
        var cache={};
        return{
            getObj:function(name){
                if(name in cache){
                    return cache[name];
        }
            var temp=new Object(name);
            cache[name]=temp;
            return temp;
        }
    }
})();
    document.write(Cache1+"<br>");
    document.write(Cache1.getObj("Wendy")+"<br>");



//二、实现封装过程。封装对象中的变量不能直接访问,可以用提供的闭包来访问。
//避免非法访问
        var person=(function(){
            var name="";
            return {
                getName:function(){
                    return name;
                },
                setName:function(value){
                    name=value;
            }
        }
       })();

       document.write(person+"<br>");
       person.setName("Red");
       document.write(person.getName());

//三、自定义js模块,大多数情况还是使用官方的js文件比较多,这里就不深入了解了


//四、闭包的缺点:闭包调用的变量常驻内存,可能造成内存泄露的问题
//解决方法:将外部调用闭包的变量赋值为null,这样系统就会认为闭包的变量是垃圾,从而回收

</script>
</body>
</html>

猜你喜欢

转载自www.cnblogs.com/cuijunfeng/p/13167113.html
今日推荐