1、事件包含哪些阶段(事件流是怎么理解的)? 答: 事件是可以被 JavaScript 侦测到的行为,事件通常与函数配合使用,当事件发生时函数才会执行。 js里面的事件的三个阶段分别为:捕获、目标、冒泡阶段。 1)捕获:事件由页面元素接收,逐级向下,到最具体元素的。 2)冒泡:跟捕获相反,由最具体的元素接收,逐级向上,到页面元素。 3)目标:最具体的元素。
2、什么是事件委托?事件委托的原理是什么?他有那些应用场景? 答: 事件委托又叫事件代理,简单理解就是自己的事情交给其他人帮忙做。在js中一般都是子元素的事件交给父元素来做。 事件委托是利用事件的冒泡原理来实现的,通过父元素监听子元素触发的事件。 为什么要使用: 1)绑定事件太多,浏览器占用内存变大,严重影响性能。 2)Ajax是异步操作,请求的数据都是动态的无法直接绑定事件。 这两种情况是开发中常出现的,所以也是应用最多的地方。
3、谈谈你对this的理解? 答: 一般情况: this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象。 特殊情况: 1)当this遇到return时,如果返回值是一个对象,那么this指向的就是那个返回的对象,如果返回值不是一个对象那么this还是指向函数的实例。 2)在箭头函数中,没有this的指向问题。这个函数中的 this 只取决于他外面的第一个不是箭头函数的函数的this。 3)在构造函数中,如果new一个实例,new操作符是会创建this的。 4)Call和apply是会改变this指向的。
|