目录
13.Javascript的事件流模型都有什么?
事件流:从页面中接收事件的顺序。也就是说当一个事件产生时,这个事件的传播过程,就是事件流。 事件流包括三个阶段:事件捕获、目标阶段、事件冒泡。
JS事件流最早IE提出的是冒泡流,而网景提出的是捕获流,后来在W3C组织的统一之下,JS支持了冒泡流和捕获流。
但对于事件本身来说,目前大多数事件支持冒泡流
14.什么是事件委托?说一说事件代理,优缺点是什么?
事件委托又叫事件代理,利用事件冒泡的原理,原本绑定在子元素身上的事件,现在绑定在父元素身上,由父元素监听事件的行为。
优点:
1.可以减少事件注册,节省大量内存占用
2.可以将事件应用于动态添加的子元素上
缺点:
使用不当会造成事件在不应该触发时触发
应用场景:
如果我们有⼀个列表,列表之中有⼤量的列表项,我们需要在点击列表项的时候响应⼀个事件;
如果给每个列表项⼀⼀都绑定⼀个函数,那对于内存消耗是⾮常⼤的;
这时候就可以事件委托,把点击事件绑定在⽗级元素 ul 上⾯,然后执⾏事件的时候再去匹配⽬标元素
15.说一下你对this的理解?
this 的指向,是当我们调用函数的时候确定的。调用方式的不同决定了this 的指向不同
- 普通函数this在非严格模式下指向window,严格模式下指向undefined
- 构造函数this指向实例对象,原型对象里面的方法也指向实例对象
- 对象方法中的this指向该方法所属的对象
- 事件绑定方法中的this指向绑定该事件的对象
- 定时器函数的this指向window
- 立即执行函数中的this指向window
16.BOM 和 DOM 的关系
BOM全称Browser Object Model,即浏览器对象模型,主要处理浏览器窗口和框架。
DOM全称Document Object Model,即文档对象模型,是 HTML 和XML 的应用程序接口(API),遵循W3C 的标准,所有浏览器公共遵守的标准。
可以说,BOM包含了DOM(对象),浏览器提供出来给予访问的是BOM对象,从BOM对象再访问到DOM对象,从而js可以操作浏览器以及浏览器读取到的文档。