• jquery10 闭包示例


    o = {
        a:1,
        o:{
            b:2,
            f : function(){
                alert(o.a);//1
                alert(o.b);//undefined   
            }
        }
    }
    o.o.f();
    
    
    o = {
        a:7,
        o : {
            a:1,
            o:{
                b:2,
                f : function(){
                    alert(o.a);//7
                    alert(o.b);//undefined   
                }
            }
        }
    }
    o.o.o.f();
    
    o = {//这个o加到window闭包里面去了
        a:7,
        o : {//这个o没有
            a:1,
            o:{//这个o没有
                b:2,
                f : function(){
                    alert(o.a);//7
                    alert(o.b);//undefined   
                }
            }
        }
    }
    o.o.o.f();
    
    
    f = function(){
        return  {
            a:1,
            o:{
                b:2,
                f : function(){
                    alert(o.a);//o is not defined ,说明o不存在
                    alert(o.b);//o is not defined ,说明o不存在
                }
            }
        }
    }
    f().o.f();
    
    f = function(){
        o = {a:7,b:8}
        return  {
            a:1,
            o:{
                b:2,
                f : function(){
                    alert(o.a);//7
                    alert(o.b);//8   return的东西不在闭包里面
                }
            }
        }
    }
    f().o.f();
    
    f = function(){
        o= {//这个o加到函数闭包里面去了
            a:1,
            o:{//这个o没有
                b:2,
                f : function(){
                    alert(o.a);//1
                    alert(o.b);//undefined
                }
            }
        }
        return o;
    }
    f().o.f();
    
    
    f = function(){
        return  {
            a:1,
            o:{
                b:2,
                f : function(){
                    o = {a:3,b:4}
                    alert(o.a);//3
                    alert(o.b);//4
                }
            }
        }
    }
    f().o.f();
    
    
    f = function(){
        o = {a:5,b:6}
        return  function(){
            a=1,
            o={
                b:2,
                f : function(){
                    alert(o.a);//unudefined    以函数作为闭包层级,一层一层的向上查找,找到了就不找了
                    alert(o.b);//2
                }
            }
            return o;
        }
    }
    f()().f();
    
    
    f = function(){
        o = {a:5,b:6}
        return  function(){
            a=1,
            b={
                b:2,
                f : function(){
                    alert(o.a);//5
                    alert(o.b);//6
                }
            }
            return b;
        }
    }
    f()().f();
    f = function(){
        
        return  function(){
            o = {a:15,b:16}//加到闭包
            a=1,
            b={//加到闭包
                o:{a:11,b:12},   //没有加到闭包
                b:2,
                f : function(){
                    alert(o.a);//15
                    alert(o.b);//16
                }
            }
            return b;
        }
    }
    f()().f();
  • 相关阅读:
    Seleniem---Python3---获取对象属性
    Selenium---Python3---cookie处理
    Selenium---Python3---控制浏览器滚动条
    Seleniem---Python3---JS调用
    Selenium---Python3---上传文件
    review——C# (7)抽象成员和抽象类
    review——C# (6)虚方法和覆写方法
    review——C# (5)屏蔽基类的成员
    review——C# (4)访问器的访问修饰符
    review——C# (3)readonly修饰符
  • 原文地址:https://www.cnblogs.com/yaowen/p/6917034.html
Copyright © 2020-2023  润新知