1原型链
提取自本链接 mp.weixin.qq.com/s?__biz=MzU… 讲的真的很明了。
2 事件冒泡与事件捕获
- js事件流:先捕获,其次处于目标阶段,最后冒泡。
- 事件代理:设置一个事件来处理一堆事件。
- 阻止事件冒泡:1.event.stopPropagation(仅阻止冒泡)2.在事件中返回false(阻止整个事件)
- 阻止默认事件:event.preventDefault.
3、js操作dom
- 创建:create
- 添加:append
- 删除:remove
- 替换:replace
- 插入:insert
- 查找:getElementBy
4、数组去重
- indexOf:返回元素在数组中第一次出现的索引值
- includes:判断数组中是否包含此元素。
- sort:使用sort先排序,判断此项和下一项是否相同,不同则push进新数组
- Set:使用ES6新方法去重,可去重后的数据结构不是数组,要使用扩展运算符将其转为数组。
5、严格模式(use strict)限制
- 变量必须声明之后再使用(否则抛出 ReferenceError)
- 禁止this指向全局
- 为只读属性赋值会抛出TypeError
6、call、apply、bind
- call和apply区别是传参方式不同,apply可以传数组
- call和apply的第一个参数如果是null或者undefined,则this指向全局。
- call和apply改变了this指向并执行了该函数。
- bind是改变this指向返回一个新的函数,之后再调用此函数this都指向bind绑定的第一个参数。
- 调用三种方法的若不是函数,则会报错。
7、垃圾回收机制及内存管理
-
Javascript具有自动垃圾回收机制,也就是说,执行环境会负责管理代码执行过程中使用的内存。
- 原理:垃圾收集器会定期(周期性)找出那些不在继续使用的变量,然后释放其内存通常情况下有两种实现方式:标记清除和引用计数
-
标记清除: js中最常用的垃圾回收方式就是标记清除。 当变量进入环境时,例如,在函数中声明一个变量,就将这个变量标记为“进入环境”。从逻辑上讲,永远不能释放进入环境的变量所占用的内存,因为只要执行流进入相应的环境,就可能会用到它们。而当变量离开环境时,则将其标记为“离开环境”。
-
引用计数:是跟踪记录每个值被引用的次数。 当声明了一个变量并将一个引用类型值赋给该变量时,则这个值的引用次数就是1。如果同一个值又被赋给另一个变量,则该值的引用次数加1。相反,如果包含对这个值引用的变量又取得了另外一个值,则这个值的引用次数减1。当这个值的引用次数变成0时,则说明没有办法再访问这个值了,因而就可以将其占用的内存空间回收回来。这样,当垃圾回收器下次再运行时,它就会释放那些引用次数为0的值所占用的内存。
-
内存管理:js引擎基础是GC方案,就是遍历所有可访问对象,回收已经不可访问对象
- 优化:将可访问对象分为临时访问对象和持久访问对象,多回收临时的,少回收持久的,这样可以减少遍历次数,省时。
遇到难点再添加,未完待续。。。。。。