数组去重
1 | // 1、利用Set数据结构 |
JS实现元素拖拽
这里拖拽分为两种,一种是拖拽元素,实现与某个区域的交互,比如拖拽某张图片到区域中,该区域添加图片元素;第二种是拖动元素到任意位置,比如验证码拖动滑块的效果。
第一个场景主要是HTML5新增的拖拽方法draggable来实现;第二个拖动元素则通过mousedown, mousemove, mouseup来实现
节流(throttle)与防抖(debounce)
HTTP常见状态码
1(信息类):表示接收到请求并且继续处理
2(响应成功):表示动作被成功接收、理解和接受
3(重定向类):为了完成指定的动作,必须接受进一步处理
4(客户端错误类):请求包含错误语法或不能正确执行
5**(服务端错误类):服务器不能正确执行一个正确的请求
从浏览器URL中获取查询参数
自己尝试写的:
1 | function parser(urlStr, key) { |
个人认为主要考的是如何用正则取出数据,字符串方法也可以做
解析整个url参数:
1 | function query(name) { |
或者直接使用URLSearchParams对象
1 | function query(name) { |
TODO: vue-router的方法
本地存储cookie, localStorage和sessionStorage
Cookie
基本概念:
path的作用?
httpOnly的作用?
same-site有了解吗?
不同url是否共享?
不区分端口
关于cookie于session的区别:
知乎上的回答:
简要说就是:不要混淆 session 和 session 实现,session的常见实现要借助cookie来发送sessionID
localStorage与sessionStorage
undefined和null的区别
- null是有值,但值是空。undefined是值未定义。
typeof null === 'object'
,typeof undefined === 'undefined
。- JSON.stringify会忽略undefined值,但会保留null值;
- 他们都是falsy ,不加!比较,永远是false (Boolean(undefined) ->// false, Boolean(null) ->// false);
Redux介绍
三大原则
- 单一数据源
整个应用的state存储在一个对象中,且该对象只存在一个store中
- State只读
唯一改变state的方式就是触发action
- 使用纯函数修改
编写reducer,接收之前的state和action,并返回新的state
实现Redux
有时候看代码模拟实现可以更直观的了解内部机制,当然能力足够建议查看redux源码。
1 | // 简易实现 |
JSONP工作原理
JSONP经常被用来解决跨域问题,浏览器对JS的请求有同源策略,但对script标签却没有,利用这点可以达到跨域的目的。
实例:
1 | <body> |
我们首先定义了processJSON方法,然后将这个方法名当作参数传给服务端用来数据,服务端将我们的方法名和实际数据拼接,返回js代码,浏览器接收并执行。
接口返回内容:
JSONP也有缺点:
- 只支持GET请求
- 不方便失败处理
- 安全性问题(XSS,脚本攻击)