zoukankan      html  css  js  c++  java
  • js12---闭包,原型,继承

    <html>
    <body>
    <script type="text/javascript">
    //闭包实现了函数层面多个子函数共享父类函数的属性、方法(继承)。类层面上原型实现了多个子类对象共享父类对象的属性、方法(继承)。
    //函数每调用一次,就会开启一个新的内存区域让函数执行。类的成员方法也是,每调用一次就开辟一个新的内存区域。
    function f1(){
        var b = 1;
        var c = function(){alert(123);}
        return function(g){
            b++;
            if(g == 0){
                c = function(){alert(b);alert(456);}
            }
            c();
        }
    }
    
    var d1 = f1();//大函数return函数模版,函数模版多次执行时地址不一样,
    alert("===");
    d1(1);//123
    alert("---");
    d1(0);//3  456,改变了大函数的c
    alert("+++");
    d1(1);//4  456,使用改变了的c
    
    var d2 = f1();//大函数return函数模版,函数模版多次执行时地址不一样,
    alert("===");
    d2(1);//123
    alert("---");
    d2(0);//3  456,改变了大函数的c
    alert("+++");
    d2(1);//4  456,使用改变了的c
    </script>
    </body>
    </html>
            var cat = (function(){//函数嵌套,就是类中类,
                //私有静态属性
                var AGE = 10;
                //私有函数
                function add(x,y){
                    return x+y;
                }
                return function(){
                    //多个子类,使用外层闭包的公有的属性和方法
                    this.age = ++AGE;
                    this.add = function(x,y){
                        //alert(age);//age is not defined
                        return add(x,y)
                    }
                    this.setAge = function(age){
                        AGE = age;
                    }
                }
            })()
            alert(new cat().add(1,2));//3,new的时候函数会执行一次
            alert(new cat().age);//12
            new cat().setAge(100);
            alert(new cat().age);//101
    function Person(name , age){
                this.name = name ; 
                this.age  = age ; 
                this.sayName = function(){alert('我是姓名!')};//sayName指的是函数模型,不同对象的成员方法执行都会开辟新内存区域,
            }
    var p1 = new Person('z3',20);
    var p2 = new Person('z4',21);
    alert(p1.sayName == p2.sayName);     // false 

     var定义的属性和方法相当于是私有的属性和方法,不同函数对象的方法的地址是不一样的。

  • 相关阅读:
    godep使用
    golang导入包的几个说明:import
    X-Frame-Options 响应头
    HTTP Strict Transport Security
    为什么我们要使用HTTP Strict Transport Security?
    IFrame安全问题解决办法(跨框架脚本(XFS)漏洞)
    基于iframe的CFS(Cross Frame Script)和Clickjacking(点击劫持)攻击
    javaWeb防止恶意登陆或防盗链的使用
    关于Cookie 的HttpOnly属性(java/web操作cookie+Tomcat操作jsessionid)
    会话cookie中缺少HttpOnly属性 解决
  • 原文地址:https://www.cnblogs.com/yaowen/p/6865605.html
Copyright © 2011-2022 走看看