zoukankan      html  css  js  c++  java
  • 3. 闭包_对象组合继承模式_事件轮询机制

    1、谈谈闭包? (产生条件、是什么、在哪里、作用、生命周期、缺点)

    产生闭包的三个条件:

    • 函数嵌套
    • 内部函数引用外部函数的局部变量
    • 执行外部函数

    包含被引用的局部变量的一个"对象",  通过 chrome 开发者工具可以调试查看到,就是 closure,它存在嵌套的内部函数中

    作用: 延长了局部变量的存活时间, 让函数外部可以操作(读写)到函数内部的数据(变量/函数)

    闭包的生命周期:

    产生 :  在嵌套内部函数定义执行完时就产生了(不是在调用)

    死亡 :  在嵌套的内部函数成为垃圾对象时

    缺点:

    函数执行完后, 函数内的局部变量没有释放, 占用内存时间会变长

    容易造成内存泄露

     

    2.  对象组合继承模式 (利用了 call 和 prototype)

    •     function Person(name, age) {
              this.name = name;
              this.age = age;
          }
          Person.prototype.setName = function (name) {
              this.name = name;
          }
      
          function Son(name, age, sex) {
              Person.call(this, name, age);
              this.sex = sex;
          }
      
          Son.prototype = new Person();
          Son.prototype.constructor = Son;

    3. 事件轮询机制

    js 主线程从事件队列中循环取出回调函数放入执行栈中处理(一个接一个)

    作用: 执行异步的回调函数

    过程:  

    js主线程执行全局代码时,

    当遇到了定时器会交给分线程管理(分线程会开始计时,到点了就将回调函数添加到事件队列中)

    当遇到 DOM 事件会交给分线程管理(给页面元素绑定事件,一旦用户触发,就会将回调函数添加到事件队列中)

    一直到执行完所有全局代码,主线程会开始轮询事件队列,一个接一个的取出回调函数执行。

     

    --------小尾巴 ________一个人欣赏-最后一朵颜色的消逝-忠诚于我的是·一颗叫做野的心.决不受人奴役.怒火中生的那一刻·终将结束...
  • 相关阅读:
    多校第四场
    codechef 两题
    Topcoder 多校T-shirt场
    状态压缩DP
    LUCAS 定理
    HDU 1104 Remainder
    HDU4542 小明系列故事——未知剩余系
    Codeforces Round #256 (Div. 2)
    Codeforces Round #FF (Div. 2)
    2016年川师大软件工程学生博客打分
  • 原文地址:https://www.cnblogs.com/tianxiaxuange/p/10200602.html
Copyright © 2011-2022 走看看