zoukankan      html  css  js  c++  java
  • JS闭包函数的概念及函数的继承

    一、闭包和函数

      (一)什么是闭包函数

        概念:简单说就是函数中嵌套函数,嵌套在这里面的函数叫做闭包函数,外面的函数叫做闭包环境

        作用:通过闭包函数,可以访问到闭包函数所在局部作用域中的变量及参数

        特点:闭包的特点或本质:将局部变量常驻内存,这既是它的优点也是它的缺点,使用不当还会造成内存泄漏

        闭包的原理:闭包是利用JS中的垃圾回收机制,当一个函数被调用时,会开辟空间,函数调用结束,会释放空间,但如果被释放空间时,发现其中有变量正在被其他函数使用时,则这个变量会常驻内存而不被回收

    二、继承和函数

      (一)构造函数继承

        1、Call/apply 继承

        2、Call 与 apply 的异同:

          1)第一个参数 this 都一样,指当前对象

          2) 第二个参数不一样:call 的是一个个的参数列表;apply 的是一个数组(arguments 也可以)

        3、构造继承特点:

          1)子类实例共享父类引用属性的问题

          2)创建子类实例时,可以向父类传递参数

          3) 可以实现多继承(call 或 apply 多个父类对象)

        4、构造继承缺点:

          1)实例并不是父类的实例,只是子类的实例

          2)只能继承父类的实例属性和方法,不能继承原型属性和方法

          3)无法实现函数复用,每个子类都有父类实例函数的副本,影响性能

      (二)Prototype 的概念

        1、 Javascript 中的每个函数都有 prototype 属性,指向函数的原型对象。每一个对象都有_ _ proto__属性,指向该对象的父对象。

      (三)原型链继承

        1、特点:

          1)非常纯粹的继承关系,实例是子类的实例,也是父类的实例

          2)父类新增原型方法/原型属性,子类都能访问到

          3) 简单,易于实现

        2、缺点:

          1) 要想为子类新增原型属性和方法,必须要在new 父类()这样的语句之后执行。要想为子类新增实例属性和方法,必须要在构造函数中添加。

          2)无法实现多继承

          3)来自原型对象的所有属性被所有实例共享

      (四)混合继承

        1、 特点:

          1)可以继承实例属性和方法,也可以继承原型属性和方法

          2) 既是子类的实例,也是父类的实例

          3) 不存在引用属性的共享问题

          4)可传参

          5)函数可复用

        2、缺点:调用了两次父类构造函数,生成了两份实例

      (五)扩展:寄生组合继承

        1、特点: 完美

  • 相关阅读:
    Animation(三)
    布局
    AutoCommpleteText
    PHP数组中常用函数
    Animation(四)
    转:JAVA内存映射文件
    Ubuntu安装jdk
    转:Java NIO 详解
    转:长连接与短连接
    Direct or Nondirect ByteBuffer
  • 原文地址:https://www.cnblogs.com/liufuyuan/p/10509260.html
Copyright © 2011-2022 走看看