zoukankan      html  css  js  c++  java
  • 闭包小小结

    闭包有很多的解释,有的是这么认为的:如果在函数func内部声明函数inner,然后在函数外部调用inner,这个过程即产生了一个闭包。还有些是这么认为的:闭包是一种使函数能够读取其它函数的局部变量的语法机制。  我比较喜欢第二种,就是这个函数它能够访问其他函数的局部变量。

    闭包的用途:一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

    一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中
    作者: 妙笔
    链接:http://www.imooc.com/article/8413
    来源:慕课网
    一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中
    作者: 妙笔
    链接:http://www.imooc.com/article/8413
    来源:慕课网
    function Current(start){
        count = start;
        return{
            on: function(){
                count++;
            },
            off: function(){
                return count;
            }
        }
    }
    var foo = Current(4);
    foo.on();
    foo.off();
    console.log(foo.off());

    这里,Counter 函数返回两个闭包,函数 on 和函数 off。 这两个函数都维持着 对外部作用域 Counter 的引用,因此总可以访问此作用域内定义的变量 count.

    闭包应用举例,模拟类的私有属性,利用闭包的性质,局部变量只有在sayAge方法中才可以访问,而name在外部也访问,从而实现了类的私有属性。

    
    
    function User(){
        this.name = "Vicfeel"; //共有属性
        var age = 23; //私有属性
        this.sayAge:function(){
           console.log("my age is " + age); 
        }
     }
     var user = new User();
     console.log(user.name); //"Vicfeel"
     console.log(user.age); //"undefined"
     user.sayAge(); //"my age is 23"
    
    

    嗯,差不多我的记录就是这样子了。

     
    好记性不如烂笔头,看到自己觉得应该记录的知识点,结合自己的理解进行记录,用于以后回顾。
  • 相关阅读:
    IE8兼容
    游标
    WARN No appenders could be found for logger (org.springframework.orm.hibernate3.support.OpenSessionInViewFilter)
    sql server 备份数据
    JS页面打印
    jQuery Mobile 入门教程
    jquerymobile入门(文件引用+多页面)
    定位和可见性
    二月份总结
    mailto用法
  • 原文地址:https://www.cnblogs.com/wangxi01/p/6427785.html
Copyright © 2011-2022 走看看