黑马程序员技术交流社区

标题: 【上海校区】JS常见面试题(三) [打印本页]

作者: 束玉杰    时间: 2020-4-22 14:17
标题: 【上海校区】JS常见面试题(三)
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指向的。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2