摘要: 实现 DFS(Depth First Search) 深度优先遍历 深度优先遍历是指从某个顶点出发, 首先访问这个顶点, 然后找出刚访问这个节点的第一个未被访问的子节点,然后再以此子节点为顶点, 继续找它的下一个顶点进行访问。重复此步骤,直至所有节点都被访问完为止。 例如有这样一棵节点树: cons 阅读全文
posted @ 2021-05-19 15:18 LiuWango 阅读(622) 评论(0) 推荐(0) 编辑
摘要: 本文所有代码均保存在HouyunCheng / mini-2vdom 虚拟DOM只是实现MVVM的一种方案,或者说是视图更新的一种策略,是实现最小化更新的diff算法的操作对象。 创建扫描器 所有编译行为的第一步都是遍历整个字符串,于是我们创建Scanner类,专门用于扫描整个字符串。 class 阅读全文
posted @ 2021-05-08 12:04 LiuWango 阅读(1050) 评论(0) 推荐(1) 编辑
摘要: 早期数据渲染的几种方式 在模板引擎没有诞生之前,为了用JS把数据渲染到页面上,诞生了一系列数据渲染的方式。 最最基础的,莫过于直接使用DOM接口创建所有节点。 <div id="root"></div> <script> var root = document.getElementById('roo 阅读全文
posted @ 2021-04-30 21:54 LiuWango 阅读(713) 评论(0) 推荐(0) 编辑
摘要: 防抖(debounce) 防抖即防止抖动,避免把一次事件误认为多次,应用的场景有: 登录,发短信,抢购按钮避免用户点击过快导致发送多次请求 调整浏览器窗口大小 在线编辑器停止输入后一定时长保存内容 实时输入搜索 ... 防抖的重点在于清零,将之前所有的操作清零,只保留最后一次操作。 function 阅读全文
posted @ 2021-04-07 10:31 LiuWango 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 图片懒加载,即在图片出现在视口内或即将出现在视口内时再加载图片。图片懒加载可以分解为两个问题: 如何判断图片在视口内 如何控制加载图片 计算图片位置 + 滚动事件 + DataSet API 先设置一个临时的data属性的src占位 <img data-src="./images/01.jfif"> 阅读全文
posted @ 2021-04-06 12:17 LiuWango 阅读(217) 评论(0) 推荐(1) 编辑
摘要: 新增的静态方法 数组新增的静态方法有如下: Array.from() 基本使用 Array.from()可以将类数组或者ES6新增的Set和Map转换为数组对象。 const arrLike = { 0: 'a', 1: 'b', 2: 'c', length: 3 } console.log(Ar 阅读全文
posted @ 2021-03-31 14:46 LiuWango 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 观察者模式(Observer Pattern) 观察者模式是一种对象间的一对多依赖关系,当一个对象的状态发生变化时,所有依赖他的对象都将得到通知。通常运用在对象之间的消息通讯中。 // 比如现在有一群学生,可以组成小组,可以寻求帮助 class Students { constructor(name 阅读全文
posted @ 2021-03-30 11:51 LiuWango 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 二叉树的定义 /** * 二叉树 * @param {any} val * @param {BinaryTree} left * @param {BinaryTree} right */ function /*class*/ BinaryTree(val, left, right) { this.v 阅读全文
posted @ 2021-03-29 21:36 LiuWango 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 跟踪属性访问 const user = { name: 'Jack' } const userPorxy = new Proxy(user, { get(target, prop) { console.log(`Getting ${prop}`); return Reflect.get(...arg 阅读全文
posted @ 2021-03-29 09:52 LiuWango 阅读(447) 评论(1) 推荐(0) 编辑
摘要: 什么是严格模式 严格模式"use strict";是ES5新增的语法,在不支持严格模式的浏览器中,这行代码仅会被识别为一个“字面量表达式语句”,而在支持严格模式的浏览器中,这行代码表示在对应作用域内开启严格模式。 为什么要使用严格模式 启用严格模式后后,JavaScript引擎会对代码进行更加严格的 阅读全文
posted @ 2021-03-29 09:32 LiuWango 阅读(500) 评论(0) 推荐(0) 编辑