zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    Vim命令合集
    感知机算法
    【项目】搜索广告CTR预估(二)
    【项目】搜索广告CTR预估(一)
    Kernel Logestic Regression
    SVM3 Soft Margin SVM
    Bias and Variance
    SVM2---核函数的引入
    贪心题目汇总
    Divergent series
  • 原文地址:https://www.cnblogs.com/cuijunfeng/p/13167113.html
Copyright © 2011-2022 走看看