804 words 1 mins.

# 前言声明 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/calculate-money-in-leetcode-bank # 计算力扣银行的钱 Hercy 想要为购买第一辆车存钱。他 每天 都往力扣银行里存钱。 最开始,他在周一的时候存入 1 块钱。从周二到周日,他每天都比前一天多存入 1 块钱。在接下来每一个周一,他都会比 前一个周一 多存入 1 块钱。 给你 n 天,请你返回在第 n 天结束的时候他在力扣银行总共存了多少块钱。 # Example Example 1: 输入:n = 4输出:10解释:第 4 天后,总额为 1...
825 words 1 mins.

# 前言声明 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum # 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 Example 1: 输入:nums = [2, 4, 6, 8], target = 10输出:[1, 2]解释:因为 nums[1] + nums[2] == 10 ,返回...
5.4k words 5 mins.

# 数据变为视图方法 介绍下面 4 中方法 纯 DOM 法 数组 Join 法 ES6 反引导法 模板引擎 Mustache 前三种方法用这个数据进行举栗 此时有个 ul 标签,我们需要在里面添加标签并将 data 中数据以 li 标签渲染到页面上的几种方法 HTML <ul id="list"></ul> data const data = [ { tag: 'li', name: 'lain', age: 16 }, { tag:...
3.8k words 3 mins.

# 什么是瀑布流? 瀑布流,又称瀑布流式布局 是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部 最早采用此布局的网站是 Pinterest,逐渐在国内流行开来。国内大多数清新站基本为这类风格 即多行等宽元素排列,后面的元素依次添加到其后,等宽不等高,根据图片原比例缩放直至宽度达到我们的要求,依次按照规则放入指定位置。 就比如下面这种效果就属于瀑布流布局 #...
1.1k words 1 mins.

# 自定义事件总线 自定义事件总线属于一种观察者模式,其中包括三个角色: 发布者(Publisher):发出事件(Event) 订阅者(Subscriber):订阅事件(Event),并且会进行响应(Handler) 事件总线(EventBus):无论是发布者还是订阅者都是通过事件总线作为中台的 当然我们可以选择一些第三方的库: Vue2 默认是带有事件总线的功能 Vue3 中推荐一些第三方库,比如 mitt 当然我们也可以实现自己的事件总线: 事件的监听方法 on 事件的发射方法 emit 事件的取消监听 off # _EventBus 实现 class _EventBus...
10k words 9 mins.

# 自定义深拷贝函数 对象相互赋值的一些关系,分别包括: 引入的赋值:指向同一个对象,相互之间会影响; 对象的浅拷贝:只是浅层的拷贝,内部引入对象时,依然会相互影响; 对象的深拷贝:两个对象不再有任何关系,不会相互影响; 我们可以通过一种方法来实现深拷贝了:JSON.parse 这种深拷贝的方式其实对于函数、Symbol 等是无法处理的; 并且如果存在对象的循环引用,也会报错的; 自定义深拷贝函数: 自定义深拷贝的基本功能 对 Symbol 的 key 进行处理 其他数据类型的值进程处理:数组、函数、Symbol、Set、Map 对循环引用的处理 # JSON 实现伪深拷贝 拿...
11k words 10 mins.

# 认识节流 throttle 函数 我们来理解一下节流的过程 当事件触发时,会执行这个事件的响应函数 如果这个事件会被频繁触发,那么节流函数会按照一定的频率来执行函数 不管在这个中间有多少次触发这个事件,执行函数的频繁总是固定的 节流的应用场景: 监听页面的滚动事件 鼠标移动事件 用户频繁点击按钮操作 游戏中的一些设计 # 节流函数的应用场景 很多人都玩过类似于 王者荣耀或者LOL 当玩 ADC 时,哪怕你疯狂点平 A,射手的射速与你点击的频率没有太大关系 因为游戏中它们是由自己的 攻速阈值 的,那么这种攻速阈值带来的效果就是...
6.8k words 6 mins.

# 认识防抖 debounce 函数 我们来理解一下它的过程: 当事件触发时,相应的函数并不会立即触发,而是会等待一定的时间 当事件密集触发时,函数的触发会被频繁的推迟 只有等待了一段时间也没有事件触发,才会真正的执行响应函数 防抖的应用场景很多: 输入框中频繁的输入内容,搜索或者提交信息; 频繁的点击按钮,触发某个事件 监听浏览器滚动事件,完成某些特定操作 用户缩放浏览器的 resize 事件 # 防抖函数的案例 举一个生活中常见的栗子 就比如玩 王者荣耀或者LOL...
12k words 11 mins.

# 认识 DOM 和架构 浏览器是用来展示网页的,而网页中最重要的就是里面各种的标签元素,JavaScript 很多时候是需要操作这些元素的。 JavaScript 如何操作元素呢?通过 Document Object Model(DOM,文档对象模型)。 DOM 给我们提供了一系列的模型和对象,让我们可以方便的来操作 Web 页面。 # EventTarget 因为继承自 EventTarget,所以也可以使用 EventTarget 的方法: document.addEventListener("click", () =>...
9.6k words 9 mins.

# 认识 BOM JavaScript 有一个非常重要的运行环境就是浏览器,而且浏览器本身又作为一个应用程序需要对其本身进行操作,所以通常浏览器会有对应的对象模型(BOM,Browser Object Model)。 我们可以将 BOM 看成是连接 JavaScript 脚本与浏览器窗口的桥梁。 BOM 主要包括一下的对象模型: window:包括全局属性、方法,控制浏览器窗口相关的属性、方法; location:浏览器连接到的对象的位置(URL); history:操作浏览器的历史; document:当前窗口操作文档的对象; window...