会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
Liu Wango
There is no birth of consciousness without pain.
博客园
首页
新随笔
联系
订阅
管理
2021年5月19日
深度优先遍历(DFS)和广度优先遍历(BFS)的实现与简单应用
摘要: 实现 DFS(Depth First Search) 深度优先遍历 深度优先遍历是指从某个顶点出发, 首先访问这个顶点, 然后找出刚访问这个节点的第一个未被访问的子节点,然后再以此子节点为顶点, 继续找它的下一个顶点进行访问。重复此步骤,直至所有节点都被访问完为止。 例如有这样一棵节点树: cons
阅读全文
posted @ 2021-05-19 15:18 LiuWango
阅读(693)
评论(0)
推荐(0)
2021年5月8日
将HTML字符串编译为虚拟DOM对象的基础实现
摘要: 本文所有代码均保存在HouyunCheng / mini-2vdom 虚拟DOM只是实现MVVM的一种方案,或者说是视图更新的一种策略,是实现最小化更新的diff算法的操作对象。 创建扫描器 所有编译行为的第一步都是遍历整个字符串,于是我们创建Scanner类,专门用于扫描整个字符串。 class
阅读全文
posted @ 2021-05-08 12:04 LiuWango
阅读(1132)
评论(0)
推荐(1)
2021年4月30日
前端数据渲染及mustache模板引擎的简单实现
摘要: 早期数据渲染的几种方式 在模板引擎没有诞生之前,为了用JS把数据渲染到页面上,诞生了一系列数据渲染的方式。 最最基础的,莫过于直接使用DOM接口创建所有节点。 <div id="root"></div> <script> var root = document.getElementById('roo
阅读全文
posted @ 2021-04-30 21:54 LiuWango
阅读(816)
评论(0)
推荐(0)
2021年4月7日
防抖和节流
摘要: 防抖(debounce) 防抖即防止抖动,避免把一次事件误认为多次,应用的场景有: 登录,发短信,抢购按钮避免用户点击过快导致发送多次请求 调整浏览器窗口大小 在线编辑器停止输入后一定时长保存内容 实时输入搜索 ... 防抖的重点在于清零,将之前所有的操作清零,只保留最后一次操作。 function
阅读全文
posted @ 2021-04-07 10:31 LiuWango
阅读(105)
评论(0)
推荐(0)
2021年4月6日
开发中实现图片懒加载
摘要: 图片懒加载,即在图片出现在视口内或即将出现在视口内时再加载图片。图片懒加载可以分解为两个问题: 如何判断图片在视口内 如何控制加载图片 计算图片位置 + 滚动事件 + DataSet API 先设置一个临时的data属性的src占位 <img data-src="./images/01.jfif">
阅读全文
posted @ 2021-04-06 12:17 LiuWango
阅读(236)
评论(0)
推荐(1)
2021年3月31日
ES6中数组新增的方法
摘要: 新增的静态方法 数组新增的静态方法有如下: 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
阅读(346)
评论(0)
推荐(0)
2021年3月30日
观察者模式-订阅发布模式
摘要: 观察者模式(Observer Pattern) 观察者模式是一种对象间的一对多依赖关系,当一个对象的状态发生变化时,所有依赖他的对象都将得到通知。通常运用在对象之间的消息通讯中。 // 比如现在有一群学生,可以组成小组,可以寻求帮助 class Students { constructor(name
阅读全文
posted @ 2021-03-30 11:51 LiuWango
阅读(152)
评论(0)
推荐(0)
2021年3月29日
遍历二叉树
摘要: 二叉树的定义 /** * 二叉树 * @param {any} val * @param {BinaryTree} left * @param {BinaryTree} right */ function /*class*/ BinaryTree(val, left, right) { this.v
阅读全文
posted @ 2021-03-29 21:36 LiuWango
阅读(66)
评论(0)
推荐(0)
js代理(Proxy)和反射(Reflect)的应用
摘要: 跟踪属性访问 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
阅读(474)
评论(1)
推荐(0)
js严格模式详解
摘要: 什么是严格模式 严格模式"use strict";是ES5新增的语法,在不支持严格模式的浏览器中,这行代码仅会被识别为一个“字面量表达式语句”,而在支持严格模式的浏览器中,这行代码表示在对应作用域内开启严格模式。 为什么要使用严格模式 启用严格模式后后,JavaScript引擎会对代码进行更加严格的
阅读全文
posted @ 2021-03-29 09:32 LiuWango
阅读(569)
评论(0)
推荐(0)
下一页
公告