迭代器
ES6中提供了一个新的语法特性用于迭代,可以对数组,类数组,普通对象(需要依赖Object.entries得到一个对象的元组数组),map,set,DOM等进行迭代。
而且支持就地解构
如何判断一个对象是否可以迭代呢?
可迭代对象普遍具有属性Symbol.iterator
,该属性为一个function,返回值是该对象的迭代器
监听元素是否滚入(出)可视区域
一直以来,检测元素的可视状态或者两个元素的相对可视状态都不是件容易事。传统的各种方案不但复杂,而且性能成本很高,比如需要监听滚动事件,然后查询 DOM , 获取元素高度、位置,计算距离视窗高度等等。
这就是 Intersection Observer 要解决的问题。它为开发人员提供一种便捷的新方法来异步查询元素相对于其他元素或视窗的位置,消除了昂贵的 DOM 查询和样式读取成本。
装饰器
用于给对象在运行期间动态的增加某个功能,职责等。相较通过继承的方式来扩充对象的功能,装饰器显得更加灵活,首先,我们可以动态给对象选定某个装饰器,而不用 hardcore 继承对象来实现某个功能点。其次:继承的方式可能会导致子类繁多,仅仅为了增加某一个单一的功能点,显得有些多余了。
所以,装饰器的作用:
1.是继承关系的一种替代
2.动态的类添加额外的功能
3.在不改变接口的前提下,增强类的性能
修饰器只能用于类和类的方法,不能用于函数,因为存在函数提升。类是不会提升的,所以就没有这方面的问题。
网友评论