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

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

产生闭包的三个条件:

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

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

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

闭包的生命周期:

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

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

缺点:

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

容易造成内存泄露

 

扫描二维码关注公众号,回复: 4714005 查看本文章

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 事件会交给分线程管理(给页面元素绑定事件,一旦用户触发,就会将回调函数添加到事件队列中)

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

 

猜你喜欢

转载自www.cnblogs.com/tianxiaxuange/p/10200602.html
今日推荐