1. 讲讲e.target和e.currentTarget的区别?
答:e.target指的是事件的触发对象,e.currentTarget指的是事件的绑定对象;因此,e.target可能是e.currentTarget的父元素,也可能是其子元素,关键在于看事件绑定在哪个元素上;从事件发生阶段来看,e.target可能发生在事件捕获阶段,也可能发生在事件的冒泡阶段;
拓展:讲讲事件代理和事件委托
详见下一篇内容:juejin.cn/post/684490…
2. json和jsonp的关系?json和Object有什么区别?
json与jsonp:
json与jsonp没有太大相关性;json是一种轻量级的数据交换格式,jsonp是一种非正式的数据传输协议,主要用来解决跨域问题;
json:
json与JavaScript对象的区别:
json是一种轻量级的数据交换格式,而JavaScript的对象是一种数据类型;
jsonp:
实现原理:
利用script标签的src属性不被同源策略限制的特点,前端将需要传递给后端的参数注入src属性中,后端接收到参数后将需要返回的参数注入到属性中再返回,前端解析后就可以执行,这样就实现了前后端通信;
特点:
实现起来比较简单,仅仅通过一个属性就能实现,缺点是由于前后端的参数都是通过参数的形式传递的,因此只能通过GET方式进行通信,同时,由于是通过src属性连接,很难定位到连接过程中出现的问题;
3. href与src属性的区别?
答:
href属性表示的是超文本引用,目的在于建立资源与当前元素的联系,常用在link标签、a标签上用于引入字体文件、css等或者实现页面跳转;当使用link元素加载href属性指向的资源时,页面解析到link标签会去下载指向的资源,但不会停下对页面的继续解析执行,也就是说,link的href属性引入资源时异步的。
src是引用外部资源,目的在于将外部资源下载到标签所在的位置,常用在标签script、img、iframe上;当解析到script标签时,页面将控制权交给script,等到script将资源下载、编译、执行完成后,再将控制权交还给页面,也就是说,script的src将会阻止页面的继续解析和执行,因此,为了解决这个问题带来的页面加载较慢的问题,常常将script引用的资源放到当前页面的底部而不是头部;
4. link和@import引入CSS的区别?
答:
link引入css属于XHTML的语法,link除了可以引用css,还可以引用RSS等;在引用时机上,解析到link标签时,会将资源下载下来,同时不会影响页面的继续解析;另外,link引入CSS不会存在兼容性问题;
@import引入CSS属于CSS的写法,只能用来加载CSS,在引用时机上,@import必须引入CSS必须等到页面完全载入以后才会加载,该语法是CSS2.1中提出,也就是说,在低版本的CSS规则下无法使用;