3. 闭包_对象组合继承模式_事件轮询机制

Posted tianxiaxuange

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 事件会交给分线程管理(给页面元素绑定事件,一旦用户触发,就会将回调函数添加到事件队列中)

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

 

以上是关于3. 闭包_对象组合继承模式_事件轮询机制的主要内容,如果未能解决你的问题,请参考以下文章

组合继承多态

原型原型链闭包继承

JS高级--原型链闭包作用域函数的四种调用方式

微信小游戏_flappy_bird

python学习8_1 面向对象(继承多态封装)以及零散概念(组合,property,绑定方法与非绑定方法,反射,内置函数)

Python之面向对象的组合多态菱形问题子类中重用父类的两种方式