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