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

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

原文地址:https://www.cnblogs.com/tianxiaxuange/p/10200602.html

时间: 2024-11-07 18:16:43

3. 闭包_对象组合继承模式_事件轮询机制的相关文章

JS高阶---事件循环模式(事件轮询)

大纲: 相关知识点: 主体: (1)模型原理 JS部分:初始化代码执行 WebAPIS:执行上下文对象(不是一个真的对象,而是一个抽象的虚拟对象,可以看做栈里的一个区域,包含很多对象) setTimeout:定时器管理模块(分线程) DOM(document):事件响应管理模块(分线程)callback queue:回调函数队列---→待执行JS中的stack初始化代码优先执行,当执行完毕后,才会执行回调代码 重点: 先执行初始化代码,执行完毕后才会循环遍历“”回调队列“”里的回调代码 (2)相

对象冒充实现继承,原型链继承方法,以及组合继承模式

function Person (){ this.name=“张三”; this.run = function(){ alert( this.name+'在运动' ) } } Person.prototype.work = function(){ alert( this.name+'在工作’ ) } // web类 继承person类 原型链+对象冒充的组合继承模式 function web(){ Person.call( this )  //  对象冒充实现继承 } var w = new w

Keepalived 之 双主模式+DNS轮询机制 实现高负载

一.Keepalived双主模式+DNS轮询机制作用 作用:在单主模式下,备机通常会以等待状态放着,不接受任何数据,导致所有数据请求只往主机-负载均衡发送,做成资源浪费:而双主模式,即创造两个VIP,两个VIP分别放在两台负载均衡的机器上,同时两台主机均为对方的备机,以作VIP的漂移,服务接管作用,加入DNS轮询机制,使客户端的域名分别依次解释到两个VIP上,形成两台负载均衡主机同时对外提供服务.同时也解决了单主模式下的单机性能屏颈. 二.网络拓扑图 三.两台负载均衡主机的Keepalived

Javascript之对象组合继承

感悟: 最近看了一些关于Javascript对象继承的知识,发现自己之前虽然看了一些书,但是很多知识都忘了.虽然很多东西都忘了,但再次看的过程中对这些东西不会再向刚接触时那么陌生,而且理解起来也比之前顺畅和透彻多了. 充分说明:多看书是有意义的. ————————————————————————————————————————————————————————————————————————————————————————————碎碎念 关于对象之间的继承,在Javascript中主要是通过原型对

封装组合继承函数

通常的组合继承模式如下 1 function Papa(){}; 2 function Child(){ 3 Papa.apply(this,arguments); 4 }; 5 Child.prototype = new Papa(); 6 Child.prototype.constructor = Child; 我们可以对这个模式进行封装 function classExtends(Class1,Class2){ Class2 = function(){ Class1.apply(this,

JavaScript组合继承的一点思考

今天看<JavaScript高级程序设计>一书中关于组合继承模式时,书上有这么一个Demo程序: <html> <head> </head> <body> <script> function SuperType(name){ this.name = name; } SuperType.prototype.sayName = function(){ alert(this.name); }; function SubType(name,

面向对象程序设计-C++_14对象组合_课时15继承

对象组合,就是一个类的对象作为另外一个类的成员,涉及类的对象,对象是实体,玩实 继承,涉及类,类是概念,玩虚 public: 所有人都可以接触 private: 数据放private protected: 留给子类

Vim技巧之四大模式_普通模式

Vim技巧之四大模式_普通模式 一见不钟情的普通模式 普通模式下面的强悍操作 什么是操作符 什么是动作命令 误操作怎么办 那种操作更划算 普通模式下的神秘大招 Vim技巧之四大模式_普通模式 众所周知,vim里面最具特色的东西就是它可以切换模式,那什么是模式呢?可以简单的理解为在不同的模式下面按相同的键而得到不同的效果.比如Vim在插入模式下面连按两次d,那么就会在光标位置插入两个字母d,如果在普通模式下面连按两次d,那么光标所在当前行将会被删除. 既然说是Vim的四大模式,那么Vim到底有那四

03-06组合与聚合_编程

编程 请使用组合或聚合模式解决如下问题: 已知有如下类: // 可以把公历转换为中国农历的日期表达. class ChinaDate { public ChinaDate(java.util.Date d) { //... } public toString() { // 复杂算法 return "五月初三"; //仅仅是模拟,实际上需要复杂计算过程 } } 请写一个 MyDate类,要求具有Date类的全部能力(已废弃功能不计),并且在打印时,输出类似如下格式: 1998年6月8日(