zoukankan      html  css  js  c++  java
  • 闭包

      封装:减少代码的冗余,提高代码的重复利用率

      继承:本来需要开辟多个空间,只需要开辟一个空间,减少内存的消耗,提高性能

      函数归属:函数归属谁,跟他在哪调用没有关系,而跟他在哪定义有关

      闭包的定义:函数在调用的时候,会形成一个私有作用域,内部的变量不能被外部访问,这种保护机制叫闭包(这就意味着函数调用完毕,这个函数形成的栈内存就会被销毁)

      栈内存被销毁的案例: 

      function fn(){
        var a=12;
        a++;
        console.log(a)
      }
      fn()     //13
      fn()     //13
      fn()     //13        (因内部存在一个变量,所以在函数内部栈内存就会被销毁)

      

      但有时候,我们不希望他被销毁 ,所以需要return

      案例: 

      function fn(){
        var a=12
        return function(){
          a++;
          console.log(a)
        }
      }
      var ss=fn()
      ss()  //13
      ss()  //14
      ss()  //15

      解析:

      

      fn()调用完毕后得到的是一个匿名函数,但这个匿名函数在fn()这个作用域下定义的,所以匿名函数内部的变量在fn()作用域下查找,这种写法可以使函数的内部变量不被销毁

       构造函数中尽量不要加return,

      类的本质也是一个函数,里面也有返回值,但默认object,如果强制return一个值,不会造成影响,如果return一个对象,就会造成影响

      

  • 相关阅读:
    设计模式之建造者模式(简单)
    设计模式之简单工厂模式,工厂模式,抽象工厂模式
    设计模式之观察者模式
    Redis java操作客服端——jedis
    Redis基础
    java环境变量配置加maven配置
    设计模式之JDK动态代理
    springboot+mybatis+Thymeleaf
    OS问题管理系统开发
    复制CentOS虚拟机网络配置
  • 原文地址:https://www.cnblogs.com/shangjun6/p/9909891.html
Copyright © 2011-2022 走看看