type
status
date
slug
summary
tags
category
icon
password
事件流
事件捕获:
- 从DOM的根元素开始去执行对应的事件(从外到里)
事件冒泡:
- 当一个元素的事件被触发时,同样的事件将会在该元素的所有祖先元素中依次触发
- 事件冒泡默认存在
- 当一个元素触发事件之后,会依次向上调用所有父级元素的同名事件(比如说click)
阻止冒泡:
- 因为默认有冒泡的存在,所以容易导致事件影响到父级;如果需要把事件限制在当前元素内就必须要阻止冒泡
事件对象.stopPropagation()
- 阻断事件流动传播,在冒泡和捕获阶段均有效
解绑事件:
对象.onclick = null
- 这样就把点击事件跟对象解绑了
对象.removeEventListener(’事件’, 函数)
- 该对象发生这个事件将不会执行这个函数
事件委托
运用事件流的特性来解决一些开发中的问题
- 给父元素注册事件,当我们触发子元素的时候,会冒泡到父元素身上,从而触发父元素的事件
- 给子元素注册事件,当父元素的事件触发时,也可以事件捕获到子元素身上
- 可以用
事件对象.target.tagName
来获取真正触发事件的元素(比如li标签的这个属性就是大写的LI)
构造函数和this
接口
- 多个名字一样的接口,实际上myInterface的属性有abc三个
- 接口可以在定义类的时候限制类的结构
- 接口只定义对象的结构而不考虑实际值
泛型
- 这样定义就表示a的类型就是T的类型
- 不指定泛型,TS可以自动对类型进行推断
- 调用函数的时候,就可以判断出T的类型是number
- 这样既不会关掉ts的类型检查,又可以传任意类型的参数
- 指定泛型类型
- 规定泛型的类型
- 表示该泛型必须有length的属性
JS函数
setTimeout()和setInterval()的用法与区别
- setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数
- setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式,setTimeout() 只执行一次
事件对象以及常见属性
获取事件对象:
- 事件绑定的回调函数的第一个参数就是事件对象 event
常见属性:
- type:当前事件的类型
- key:用户按下键盘的值
传统方法和静态方法
在react里面写传统方法的话必须在JSX中声明:
写静态方法的话直接调用就可以了,就不需要在JSX中进行声明,使用open直接就能打开一个对话框:
open这个方法里面处理具体的事务
JS 的垃圾回收机制
可达性:
- 某块内存不可达了就会被回收,js 引擎中有一个叫垃圾回收器的东西在后台执行,监控所有对象的状态,并删除掉那些不可达的对象
- 如果一个值可以从根通过引用或者引用链进行访问,则认为该值是可达的
- 此时全局变量 user 引用了对象 { name: “Jonh” }
- 如果 user 的值被重写:user = null,这个引用就没了,对象不可达,垃圾回收器会认为该对象是垃圾数据并进行回收,然后释放内存
无法到达的岛屿:
- 几个对象相互引用,但外部没有对其任意对象的引用,这些对象也可能是不可达的,并被从内存中删除

"family"
对象已经不再与根相连,没有了外部对其的引用,所以它变成了一座“孤岛”,并且将被从内存中删除
内部算法:
- 垃圾回收的基本算法被称为 “mark-and-sweep”
- 定期执行“垃圾回收”步骤:
- 垃圾收集器找到所有的根,并对其进行标记
- 遍历并标记来自根的所有引用
- ……如此操作,直到所有可达的(从根部)引用都被访问到,没有被标记到的对象会被删除
小结:
- 垃圾回收是自动完成的,我们不能强制执行或是阻止执行
- 当对象是可达状态时,它一定是存在于内存中的
- 被引用与可访问(从一个根)不同:一组相互连接的对象可能整体都不可达,正如我们在上面的例子中看到的那样
- Author:orangec
- URL:orange’s blog | welcome to my blog (clovy.top)/article/108c107a-b41d-80e8-ace7-ccdbe0bfc1bb
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!