这是我参与「第四届青训营 」笔记创作活动的第6天
本堂课的重点
重点的介绍了js同步模式和异步模式,js延迟加载,浅拷贝和深拷贝的要点。对js垃圾回收机制的理解还不够透彻,会在接下来的学习中慢慢补充我的理解。
1.同步模式和异步模式
同步模式:按顺序执行代码,执行代码的顺序和编写代码的顺序是一致的。前一个任务没有执行结束,下一个任务不会执行。
优缺点:同步的执行效率会比较低,耗费时间,但有利于我们对流程进行控制,避免很多不可掌控的意外情况。堵塞
异步模式:所有同步任务都会在主线程上执行,形成一个执行栈;在主线程之外,还有一个"任务队列",如果异步任务有了执行结果,就会在"任务队列"中放置一个事件。等执行栈中的同步任务执行完毕后,就开始读取"任务队列",那些事件对应那些异步任务,如果满足条件,就进入执行栈开始执行。
异步:setTimeout函数,setInterval函数
队列:先进先出
栈:先进后出
2.js垃圾回收机制
js垃圾回收机制是为了防止内存泄漏,垃圾回收机制就是间歇地不定期的寻找不再使用的变量,并释放掉他们所指向的内存。
内存泄漏:不再使用的变量没有被及时的释放。
标记清除
引用计数
3.js代码如何进行延迟加载
(1)将js的具体脚本文件放在文档最底部(body标签结束前),使js脚本最后加载。
(2)异步:为js脚本文件添加defer属性,加载完毕后按顺序执行。
(3)异步:为js脚本文件添加async属性(esaike),那个先加载完,那个先执行。
(4)对文档的加载事件进行监听
//文档加载完毕后执行
window.onload=function(){
}
4.浅拷贝和深拷贝
浅拷贝:只拷贝引用地址,其中一个对象改变了地址,会影响另一个对象。 深拷贝:是对对象的克隆,开辟了一个新地址,原对象与新对象互不影响。
5.深拷贝的实现方式
(1)Object.assign()拷贝
var stu1 = {
name:"zhangsan"
}
stu2 = Object.saaign({},stu1);
stu2.name = "lisi"
console.log(stu1);
输出结果:{name:'zhangsan'}
(2)JSON序列化 JSON.parse(JSON.stringify(obj))
var stu1 = {
name:"zhangsan"
}
stu2 = JSON.parse(JSON.stringify(stu1));
stu2.name = "lisi"
console.log(stu1);
输出结果:{name:'zhangsan'}