1,内存泄露的排除定位和解决方法
答:内存泄漏就是有资源未被内存池回收,释放出来占用内存,表现为程序卡死或者浏览器卡死状态;通过谷歌浏览器的performance来监测;
内存泄漏的几个方式:全局变量的声明,未带var关键字的,可在js文件中用use strict;定时器的应用,未有结束定时器的操作,导致一直执行定时器任务;闭包中无用的方法执行,不能被回收,就一直占用内存。
2,websocket实现原理
答:websocket是建立一个客户端和服务端双向通信的桥梁。服务器端接收到信息之后,主动的去通知客户端进行接收,做对应的逻辑判断显示。
3,从输入一个url到浏览器页面展示都经历了哪些过程
答:首先是输入URL地址,浏览器拿到地址以后就去进行解析,解析之前先看缓存中有没有访问记录,有的话就直接打开,反之浏览器就进行DNS解析,获取对应的IP,然后就向服务器进行三次握手,成功之后服务器收到请求返回对应的数据包,返回给浏览器,浏览器就来进行解析渲染,最终就显示出来。
4,new生成了一个对象的过程(核心return this)
答:构造函数的new关键字,new一个对象函数,其实就是js的继承函数,继承了原函数的属性和方法,从而在内存中分配了一个实例对象,this就是指当前构造函数。
5,请简单说明什么是事件冒泡和事件捕获以及事件委托
答:事件捕获是从上一级标签开始到最终目标事件目标;事件冒泡是从事件目标冒泡到最父级的查找;事件委托利用了事件冒泡,只指定一个事件处理程序,就可以管理一个类型的所以事件,比如给li添加事件,可以不用循环,直接查找对应的li来添加一个事件就能完成。
6,请简述一下js原型链
答:每个对象都有一个原型prototype,对象的原型指向原型对象。在层级多的关系中,多个原型层层相连则构成了原型链,像链条一样连接起来,在查找一个对象的属性的时候,会沿着原型链一直往上查找,一直到最顶端。