• 闭包小小结


    闭包有很多的解释,有的是这么认为的:如果在函数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"
    
    

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

     
    好记性不如烂笔头,看到自己觉得应该记录的知识点,结合自己的理解进行记录,用于以后回顾。
  • 相关阅读:
    Python3 日期与时间戳相互转换
    PHP 二维数组排序保持键名不变
    C# Command命令(行为型模式)+队列 实现事务,带异步命令重试机制和生命周期
    领域驱动系列五模型驱动设计的构造块
    领域驱动系列四之模型驱动
    领域驱动系列三
    领域驱动系列二策略模式的应用
    领域驱动系列一基本概念介绍
    Redis学习系列七分布式锁
    Redis学习系列六ZSet(有序列表)及Redis数据结构的过期
  • 原文地址:https://www.cnblogs.com/wangxi01/p/6427785.html
Copyright © 2020-2023  润新知