7.20 笔记

96 阅读1分钟

========= 7.20 笔记 =========

bfc: Block formating context (块级格式化上下文)

作用:

  • margin 重叠,
  • float 脱离文档流, 导致高度坍塌

规则:

  • 一个独立布局空间, 内部元素 与 外面 互相不影响。
  • 同一个bfc 内,margin 会发生坍塌,只计算最大的margin.
  • 元素内部垂直方向一个接一个排布
  • 高度计算 包含float 元素。
  • float 盒子不叠加到 bfc 上

形成要件:

  • overflow 不为 visible
  • display: inline-block, table-cell, flex
  • position: absolute, fixed
  • float 不为 none

迭代器: Iterator

作用:

  • 是一种接口,能给不同数据结构提供统一的访问机制。

构成:

  • 迭代器对象 (包含 value: any, done: boolean 属性, next: func 方法), 迭代每次返回一个迭代器对象 function Iterator() {

}

对象可迭代实现:

  • 实现 obj[Symbol.iterator] 属性。
obj[Symbol.iterator] = function() {
	var selt = this;
	var i = 0;
	return {
		next: function() {
			return {
				value: any,
				done: boolean
			}
		}
	}
}

应用:

  • 解构, 扩展运算(...),

生成器: Generator

  • 生成迭代器,简化迭代器的构造
  • function* 声明生成器函数

构成:

  • yield & yield*, 可以将函数控制权交给外部处理; next, throw 可以将控制权移交回函数
  • yield - 给外部返回值
  • yield* - 给外部返回一个可迭代对象
  • next() -

实现:

const generator = function* () {
    yield 'hello';
    yield 'jjm';
    yield* '123456789';
    yield 'end';
}

let obj = {
    [Symbol.iterator]: generator
}

for (const val of obj) {
    console.log(val);
}