
JavaScript
知识点整理
小斯不斯
平坦的路好走,但泥泞的路上才能留下脚印
展开
-
数组-前缀和数组
前缀和数组原创 2022-07-13 18:20:24 · 950 阅读 · 3 评论 -
数组题-双指针技巧
数组没有真正意义上的指针,可以把索引当作指针。leetcode:83. 删除排序链表中的重复元素 leetcode:27. 移除元素 leetcode:283. 移动零左右指针: leetcode:167. 两数之和 II - 输入有序数组 leetcode:344. 反转字符串leetcode:5. 最长回文子串...原创 2022-07-11 19:46:54 · 531 阅读 · 0 评论 -
链表-判断回文链表
判断回文链表/回文字符串原创 2022-07-08 15:58:00 · 578 阅读 · 0 评论 -
链表-反转链表
反转链表原创 2022-07-08 11:35:47 · 332 阅读 · 0 评论 -
链表题--使用双指针技巧汇总
双指针技巧解决链表题汇总 leetcode:23. 合并K个升序链表 (常考) 剑指 Offer 22. 链表中倒数第k个节点 leetcode:19. 删除链表的倒数第 N 个结点 leetcode:876. 链表的中间结点 leetcode:142. 环形链表 II leetcode:160. 相交链表...原创 2022-07-07 17:35:31 · 450 阅读 · 0 评论 -
数组:剑指 Offer 03. 数组中重复的数字
数组:剑指 Offer 03. 数组中重复的数字原创 2022-07-05 16:38:15 · 123 阅读 · 0 评论 -
数组:leetcode27:移除元素
leetcode27:移除元素原创 2022-07-04 19:24:12 · 288 阅读 · 0 评论 -
二叉树前序/中序/后序/层序遍历
二叉树前序/中序/后序/层序遍历原创 2022-07-01 16:58:43 · 130 阅读 · 0 评论 -
将列表还原为树状结构
JavaScript:将列表还原为树状结构原创 2022-07-01 11:36:07 · 715 阅读 · 0 评论 -
算法-求次数问题汇总
只出现一次的数字原创 2022-06-30 16:47:04 · 246 阅读 · 0 评论 -
实现数组扁平化的几种方式
flat() 默认拉平一层嵌套数组原创 2022-06-29 15:35:48 · 183 阅读 · 0 评论 -
setTimeout和setInterval相互实现
setInterval在执行完一次代码之后, 经过了那个固定的时间间隔, 它还会自动重复执行代码, 而setTimeout只执行一次那段代码。带清除定时器版本3、利用setInterval实现setTimeout4、扩展思考:为什么要用 setTimeout 模拟实现 setInterval?setInterval 的缺陷是什么?这里只做粗略回答:定时器指定的时间间隔,表示的是何时将定时器的代码添加到消息队列,而不是何时执行代码。所以真正何时执行代码的时间是不能保证的,取决于何时被原创 2022-06-29 15:07:05 · 876 阅读 · 0 评论 -
Javascript - Promise的实现过程
一、认识PromisePromise是一个类,可以翻译成 承诺、许诺 、期约当我们需要给予调用者一个承诺:待会儿我会给你回调数据时,就可以创建一个Promise的对象二、Promise的状态 待定(pending) 完成(fulfilled) 拒绝(rejected) 一旦状态被确定下来,Promise的状态会被 锁死,该Promise的状态是不可更改的三、其他promise的API建议自己查询文档,本文只注重功能的实现四、代码实现步骤:1、代码结构的...原创 2021-12-16 16:39:29 · 1250 阅读 · 0 评论 -
Javascript-实现全局事件总线Event Bus/ Event Emitter
自定义事件总线原创 2021-12-15 15:24:14 · 1809 阅读 · 0 评论 -
JavaScript-深拷贝函数的实现
1、常见的一种实现方式const info = JSON.parse(JSON.stringify(obj))2、简单实现 deepClone//工具函数function isObject(value) { const type = typeof value return (value !== null) && (type === 'object' || type === 'function')}function deepClone(originVal原创 2021-12-15 11:49:25 · 1363 阅读 · 0 评论 -
JavaScript-节流函数的实现
1、对节流函数该怎么理解日常小案例:老师在上完课后给大家【五分钟】询问大家有没有什么问题要问但是在【五分钟】之内,不管有多少同学 来问问题,都只会【解答一个问题】如果在解答一个问题后,5分钟过后还没有同学问问题,那么就下课所以用三句话理解就是:当事件触发时,会触发这个事件的响应函数 当事件密集触发时,节流函数会按照一定的频率来执行函数 不管在这个中间有多少次触发这个事件,执行函数的频率总是固定的2、拙劣的图解3、 节流的应用场景监听页面的滚动事件 鼠标的移动事件原创 2021-12-14 18:06:54 · 2791 阅读 · 1 评论 -
JavaScript-防抖函数的实现
1、对防抖函数该怎么理解日常小案例:老师在上完课后给大家【五分钟】询问大家有没有什么问题要问如果在【五分钟】时间内,没有问题要问,那么就下课了(相当于执行事件了)如果在此期间,小非来问 问题,并且帮她解答了,解答完后,会再等【五分钟】看看还有没有别的同学问问题如果在此期间,小凡来问 问题,并且帮她解答了,解答完后,会再等【五分钟】看看还有没有别的同学问问题如果我等待超过了5分钟,那么就下课了(相当于执行事件了)所以用三句话理解就是:当事件触发时,相应的函数并不会立即触发,而是原创 2021-12-14 15:48:24 · 484 阅读 · 0 评论 -
JavaScript-简单封装Storage工具类
class MyCache { constructor(isLocal = true) { this.storage = isLocal ? localStorage: sessionStorage } setItem(key, value) { if (value) { this.storage.setItem(key, JSON.stringify(value)) } } getItem(key) { let value = this.原创 2021-12-13 20:13:14 · 425 阅读 · 0 评论 -
函数柯里化
1、对柯里化的理解只传递给函数一部分参数来调用它,让它返回一个函数去处理剩余的参数的过程2、柯里化的结构//1、普通函数function add(x, y, z) { return x + y + z}var result = add(10, 20, 30)//2、函数柯里化function sum1(x) { return function(y) { return function(z) { return x + y + z } }}原创 2021-12-13 16:14:12 · 232 阅读 · 0 评论 -
[].slice.call(arguments)将arguments转成array
常见的一种将arguments转成array的方式:[].slice.call(arguments)//提高性能,减少一层对原型链的追溯Array.prototype.slice.call(arguments)这段代码的意思是能够将具有length属性的arguments转换为数组在这里先手动实现一下Array中的slice方法Array.prototype.mySlice = function (start, end) { let arr = this sta原创 2021-12-13 15:05:21 · 338 阅读 · 0 评论 -
JavaScript-bind函数的简单实现
bind()方法创建一个新的函数,在bind()被调用时,这个新函数的this被指定为bind()的第一个参数,而其余参数将作为新函数的参数,供调用时使用。Function.prototype.myBind = function (thisArg, ...argsArray) { //第一步,对thisArg处理,以防传进来的不是对象,基本类型的数据会转为包装对象,null和undefined会指向window thisArg = thisArg ? Object(thi...原创 2021-12-13 14:27:19 · 136 阅读 · 0 评论 -
JavaScript-apply函数的简单实现
注意:call和apply的区别就是传参数的方式不一样sum.call("call", 20, 30, 40)sum.apply("apply", [20, 30, 40])Function.prototype.myApply = function (thisArg, argArray) { //第一步,对thisArg处理,以防传进来的不是对象,基本类型的数据会转为包装对象,null和undefined会指向window thisArg = thisArg ? Object.原创 2021-12-13 11:43:15 · 389 阅读 · 0 评论 -
JavaScript-call函数的简单实现
Function.prototype.myCall = function (thisArg,...args) { //第一步,对thisArg处理,以防传进来的不是对象,基本类型的数据会转为包装对象,null和undefined会指向window thisArg = thisArg ? Object(thisArg) : window //第二步,调用绑定的函数,这里的this就是这个函数 thisArg.fn = this //第三步,将调用函数的结果返回出去 .原创 2021-12-13 11:32:18 · 660 阅读 · 0 评论