JS 基础知识到 JS WEB API
· JS 基础知识,规定语法(ECMA 262标准)
· JS WEB API, 网页操作的 API (W3C标准)
· 前者是后者的基础,两者结合才能真正实际应用
DOM
DOM 本质
HTML语言解析出来的一棵树(DOM 树)
DOM 节点操作
获取DOM节点
attribute
property
DOM 结构操作
新增/插入节点
获取子元素列表,获取父元素
删除子元素
DOM 性能
· DOM 操作非常昂贵,避免频繁的 DOM 操作
· 对 DOM 查询做缓存
· 将频繁操作改为一次性操作
BOM
navigator (识别浏览器类型)
screen
location (分析拆解url各个部分)
history
事件绑定
事件绑定
事件冒泡
事件代理 (面试必考)
注意:
· 代码简介
· 减少浏览器内存占用
· 但是,不要滥用
面试题:
1、 编写一个通用的事件绑定函数
2、描述事件冒泡的流程
· 基于DOM树形结构
· 事件会顺着触发元素往上冒泡
· 应用场景: 代理
3、无限下拉图片列表,如何监听图片的点击?
· 事件代理
· 用 e.target获取触发元素
· 用matchs 来判断是否触发元素
Ajax
核心API - XMLHttpRequest
const xhl = new XMLHttpRequest()
xhl.open('GET', '/api', true)
xhl.onreadystatechange = function () {
if (xhl.readyState === 4) {
if (xhl.status === 200) {
alert(xhl.response)
}
}
}
xhl.send(null)
xhl.readyState:
· 0- (未初始化),还没有调用send()方法
· 1- (载入)已经调用send()方法,正在发送请求
· 2- (载入完成)send()方法执行完成,已经接受接收全部响应内容
· 3- (交互)正在解析响应内容
· 4- (完成)响应内容解析完成,可以在客户端调用
状态码
xhl.status
· 2xx - 表示成功处理请求,如200
· 3xx - 需要重定向,浏览器直接跳转,如 301,302,304
· 4xx - 客户端请求错误,如 404, 403
· 5xx - 服务端错误
跨域:同源策略,跨域解决方案
什么是跨域(同源策略)
实现跨域方式- JSONP
· script> 可以绕过跨域限制
· 服务器可以任意动态拼接数据返回
· 所以, script就可以获得跨域的数据,只要服务端愿意返回
实现跨域方式- CORS(服务端支持,服务器端设置 http header)
面试题
1、 手写一个简易的 ajax
function ajax(url) {
const p = new Promise(((resolve, reject) => {
const xhl = new XMLHttpRequest()
xhl.open('GET', url, true)
xhl.onreadystatechange = function () {
if (xhl.readyState === 4) {
if (xhl.status === 200) {
resolve(JSON.parse(xhl.responseText))
} else {
reject(new Error('404 not found'))
}
}
}
}))
return p
}
const url = '/data/test.json'
ajax(url)
.then(res => {
console.log(res.data)
})
.catch(err => {
console.log(err)
})
2、跨域的常用实现方式
jsonp、 cors
3、常见的ajax 工具
jquey 、 fetch、 axios
存储
cookie
· 本身被用于浏览器和server通讯
· 被“借用”到本地存储
· 可以用 document.cookie = '...'来修改
缺点:
· 存储大小,最大4KB
· http 请求时需要发送到服务端,增加请求数量
· 只能用 document.cookie = ‘...’ 来修改,太过简陋
localStorage 和sessionStorage
· HTML5 专门为存储设计,最大可存5M
· API简单易用 setItem、getItem
· 不会随着 http 请求被发送出去
· localStorage 数据会永久存储,除非代码手动删除
· sessionStorage 数据只存在于当前会话,浏览器关闭则清空
· 一般用 localStorage 会更多一些
面试题
1、 描述cookie、 localStorage、sessionStorage 区别
· 容量
· API 易用性
· 是否跟随 http 请求发送出去