前端面试之javascript篇
深拷贝和浅拷贝 浅拷贝是拷贝了对象的引用,当原对象发生变化的时候,拷贝对象也跟着变化;深拷贝是另外申请了一块内存,内容和原对象一样,更改原对象,拷贝对象不会发生变化; 深层次理解:浅拷贝是拷贝一层,深层次的对象级别的就拷贝引用;深拷贝是拷贝多层,每一级别的数据都会拷贝出来 深拷贝实现方法: 递归和序列化反序列化 浅拷贝: object.assign() 扩展运算符 遍历 webpack 侧重打包,性能优化,压缩从四,js 数组排序:原生sort,冒泡排序(比较相邻的两个数),快速排序(递归,左右快速的排序), 还有插入排序,选择排序 数据结构 栈(先进后出)队列(先进先出)链表,set集合 js拖拽功能的实现 js节流和防抖 防抖是输入框,滚动,太频繁容易使页面卡顿,掉帧。然后采用合并请求,n秒内执行一次。 节流是n秒内至少执行一次。 手动实现promise Commonjs,Amd,cmd模块化 commonjs是用在服务器端的,同步的,如nodejs amd, cmd是用在浏览器端的,异步的,如requirejs和seajs 其中,amd先提出,cmd是根据commonjs和amd基础上提出的 Once函数 Promise封装ajax Js监听对象属性的改变 自己实现一个bind函数,apply函数 数组去重(最起码说三种) 1.indexof 遍历