事件委托(事件代理)
事件冒泡:JS中当触发某些具有冒泡性质的事件时,首先在触发元素寻找是否有相应的注册事件,如果没有再继续向上级元素寻找是否有相应的注册事件作为响应。
事件委托:利用事件冒泡的特性,将本应该注册在子元素上的处理事件注册在父元素上,这样点击子元素时发现其本身没有相应事件就到父元素上寻找作出响应。
优势:
- 减少DOM操作,提高性能
- 随时可以添加子元素,添加的子元素会自动有响应的处理事件
e.target与e.vurrentTarget的区别
e.target:指向用触发事件监听的对象 e.vurrentTarget:指向添加监听事件的对象
闭包 定义 /用处/缺点
定义:能够读取其他函数内部变量的函数 用处:
- 可以读取函数内部的变量
- 让变量的值始终保持在内存中,不会在f1调用后被自动清除 缺点:不必要的闭包hi增加内存消耗 使用场景:
- 匿名自执行函数
- 初始化时,定义一个匿名函数,并立即执行。
- 结果缓存
- 封装函数
- 实现类和继承
内存泄漏的场景
- 意外的全局变量
- 解决方法:使用严格模式
- 计时器和回调函数
- 解决方法:必要时,返回
- DOM泄漏
- 相关DOM元素被移除,使用removeeventlistener()显式删除
- JS闭包
- 解决方法:了解闭包的预期生命周期
- console.log()
ES6中module与commons的区别
- CommonJS模块输出是一个值的拷贝,ES6模块输出的值是引用,同时会继承当前环境
- CommonJS是运行时候加载,ES6模块的编译的时候输出接口
- CommonJS是require()同步加载模块,ES6模块是import命令是异步加载,有一个独立的模块依赖的解析阶段
http与https的区别
- HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
- HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
- HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。
http2与http1的区别
- http2使用的是二进制传送,http1是文本传送
- http2支持多路复用
- http2头部压缩
- http2支持服务器推送
token是如何防范CSRF(跨站请求伪造)
token验证,服务器从请求体火这请求参数中获取设置的token,然后和Cookie中的token进行比较,一致后才执行请求。