- 博客(172)
- 收藏
- 关注
原创 判断对象是否存在循环引用
对象的循环引用是指两个或多个对象相互引用,形成一个闭环。例如,对象A引用对象B,而对象B又引用对象A。这种循环引用可能会导致内存泄漏或在某些操作(如深拷贝)中引发错误。
2025-02-13 10:32:51
361
原创 使用setTimeout实现setInterval、实现jsonp
setInterval的作用是每隔一段指定时间执行一个函数,但是这个执行不是真的到了时间立即执行,它真正的作用是每隔一段时间将事件加入事件队列中去,只有在当前执行栈为空的时候,才会从事件队列中取出事件执行。使用setTimeout递归调用来模拟setInterval,就可以确保只有一个事件结束了,才会触发下一个定时器事件,这样解决了setInterval的问题。实现思路是使用递归函数,不断地去执行setTimeout从而达到setInterval的效果。
2025-02-12 10:46:03
355
原创 实现双向数据绑定
通过 Object.defineProperty 方法对 obj.text 属性进行了数据劫持,实现了当 obj.text 的值发生变化时,自动更新输入框和页面上的 < span > 元素的内容。同时,通过监听输入框的 keyup 事件,实时更新 obj.text 的值。
2025-02-10 22:34:23
341
原创 小孩报数问题(约瑟夫环)
有30个小孩,编号从1-30,围成一圈依次报数1、2、3,数到3的小孩退出这个圈,然后下一个小孩重新报数1、2、3,问最后剩下的那个小孩的编号是多少?
2025-02-10 22:29:55
589
原创 实现数字每千分位用逗号隔开、实现非负大整数相加
一旦数字超过 Number.MAX_SAFE_INTEGER 数字会被立即转换为科学计数法,并且数字精度相比以前将会有误差,所以如果想要对一个超大的整数进行加法运算,但是又想输出一般形式,使用 + 是无法达到的。因此,用字符串的方式来保存大数,这样数字在数学表示上就不会发生变化。
2025-02-04 12:01:41
357
原创 实现数组的扁平化
通过循环递归的方式,遍历数组的每一项,如果该项还是一个数组,那么就继续递归遍历,实现数组的每一项的连接。的方法将数组转换为字符串,然后通过正则表达式过滤掉字符串中的数组的方括号,最后再利用。如果层数不确定,参数可以传进Infinity,代表不论多少层都要展开。其中depth是可以传递数组的展开深度,默认是1,即展开1层数组。将数组转换成用逗号分隔的字符串,然后再用。的方法共同使用,逐层展开数组。方法把字符串重新转换为数组。简化第1种方法的代码,用。
2025-02-03 12:16:21
432
原创 两栏布局、三栏布局、水平垂直居中
一般两栏布局指的是左边一栏宽度固定,右边一栏宽度自适应。利用浮动,将左边元素宽度设置为200px,并且设置向左浮动,将右边元素的margin-left设置为200px,宽度设置为auto,撑满整个父元素。1.2 浮动 + BFC利用浮动,左侧元素设置固定大小,并且设置向左浮动,右侧元素设置 这样右边就触发了BFC,BFC的区域不会与浮动元素发生重叠,所以两侧就不会发生重叠。1.3 flex布局利用flex布局,将左边元素设置为固定宽度200px,将右边的元素设置为。1.4 左绝父相 + margi
2025-02-02 18:04:05
1752
原创 实现Ajax请求、实现深拷贝
深拷贝相对浅拷贝而言,如果遇到属性值为引用类型的时候,它新建一个引用类型并将对应的值复制给它,因此对象获得的一个新的引用类型而不是一个原有类型的引用。利用JSON.stringify将js对象序列化(JSON字符串),再使用JSON.parse来反序列化(还原)js对象。
2025-02-02 10:34:32
446
原创 笔记day5
getFloorList这个action在哪里触发,是需要在Home路由当中发的,不能在Floor组件内部发action,因为需要v-for遍历floor组件。$nextTick:在下次DOM更新 循环结束之后 执行延迟回调,在 修改数据之后 立即使用这个方法,获取更新后的DOM。$nextTick:可以保证页面中的结构一定是有的,经常和很多插件一起使用【都需要DOM存在】切记:仓库当中的state数据格式,不能乱写,数据格式取决于服务器返回的数据。组件通信方式有哪些?v-for也可以在自定义标签中使用。
2024-12-22 11:39:50
385
原创 笔记day4
过渡动画:前提组件|元素务必要有v-if|v-show指令才可以进行过渡动画。在App根组件中发请求【根组件mounted】执行一次。
2024-12-20 11:58:45
358
原创 笔记day3
三级联动用户可以点击的:一级分类、二级分类、三级分类,当你点击的时候,Home模块跳转到Search模块,一级会把用户选中的产品(产品的名字、产品的ID)在路由跳转的时候,进行传递。router-link:当服务器的数据返回之后,循环出很多的router-link组件【创建组件实例,将虚拟DOM转为真实DOM】三级联动:如果使用声明式导航router-link,可以实现路由的跳转与传递参数,但是需要注意,出现卡顿现象。创建组件实例时,一瞬间创建1000+,很耗内存的,因此出现了卡顿现象。
2024-12-20 11:57:40
288
原创 笔记day2
编程式路由跳转到当前路由(参数不变),多次执行会做出NavigationDuplivated的警告错误?“vue-router”: “^3.5.3”,最新的vue-router引入promise。这种方法:治标不治本,将来在别的组件当中push|replace,编程式导航还是有类似错误。通过给push方法传递相应的成功、失败的回调函数,可以捕获到当前错误,可以解决。如果项目过大,组件过多,接口很多,数据也很多,可以让vuex实现模块式开发。为什么编程式导航进行路由跳转的时候,就有这种警告错误呢?
2024-12-19 11:01:05
1163
原创 笔记day1
路由组件与非路由组件的区别?路由组件一般放置在pages|views文件夹,非路由组件一般放置在components文件夹中路由组件一般需要在router文件夹中进行注册(使用的即为组件的名字),非路由在使用的时候,一般都是以标签的形式使用注册完路由,不管路由组件还是非路由组件,身上都有$ route、$ router属性$ route:一般获取路由信息【路径、query、params等等】$ router:一般进行编程式导航进行路由跳转【push|replace】
2024-12-19 10:40:50
590
原创 【JavaScript】LeetCode:86-90
自上往下:与左右孩子进行比较,若均 > 左右孩子,则与左右孩子中较小值交换,否则与 < 自身的孩子交换。pop():取出堆顶元素,将堆中最后一个元素与堆顶元素交换,然后自上往下判断一次。自下往上:与父节点进行比较,若 > 父节点,则与父节点交换。push():插入末尾,然后自下而上判断一次。
2024-11-12 16:05:38
924
原创 【前端】JavaScript高级教程:线程机制与事件机制
/ 绑定接收消息的监听,on是当...的时候,当接收到message时,自动调用函数。//暂停当前主线程的执行, 同时暂停计时, 点击确定后, 恢复程序执行和计时。'主线程接收分线程返回的数据: ''主线程向分线程发送数据: '//创建一个Worker对象。// 做一个长时间的工作。'启动定时器前...''启动定时器后...''alert()之前''alert()之后'// 向分线程发送消息。
2024-11-12 15:05:35
448
原创 【Promise】自定义promise
*自定义 Promise*//*Promise 构造函数excutor: 内部同步执行的函数 (resolve, reject) => {}*//*为 promise 指定成功/失败的回调函数函数的返回值是一个新的 promise 对象*//*为 promise 指定失败的回调函数是 then(null, onRejected)的语法糖*//*返回一个指定了成功 value 的 promise 对象*//*返回一个指定了失败 reason 的 promise 对象*/
2024-11-10 21:03:48
655
原创 【Promise】promise的理解和使用
文章目录1 什么是Promise1.1 理解1.2 Promise的状态改变1.3 Promise的基本流程1.4 Promise的基本使用2 使用Promise的意义2.1 指定回调函数的方式更加灵活2.2 支持链式调用,可以解决回调地狱问题3 如何使用Promise3.1 API3.2 promise 的几个关键问题3.2.1 如何改变 promise 的状态?3.2.2 一个 promise 指定多个成功 / 失败回调函数,都会调用吗?3.2.3 改变 promise 状态和指定回调函数谁先谁后?3.
2024-11-10 21:00:26
1454
原创 【Promise】async与await
/await右侧表达式为promise对象,得到的结果就是promise成功的value。//await右侧表达式不是promise对象,得到的结果就是表达式的值(本身)如果表达式是promise对象, await返回的是promise成功的值。//成功的promise 3。//失败的promise 3。//async函数的promise的结果由函数执行的结果决定。//return 1;//成功的promise 1。//async函数的返回值是一个promise对象。//失败的promise 2。
2024-11-09 10:44:04
807
原创 【Promise】JS 异步之宏队列与微队列
/上面是pending状态,将此回调函数先存在callbacks中,3执行后放4。//.then()执行,内部缓存回调函数,然后外层.then()执行完毕。//放入微队列 return undefined。//timeout callback2()之前。//每次取出宏任务前需要把所有的微任务处理掉。//输出:2 5 3 4 1。//输出:3 2 4 1。//first()成功。//会立即放入宏队列。//会立即放入微队列。//会立即放入宏队列。//会立即放入微队列。//会立即放入微队列。
2024-11-09 09:51:19
1114
原创 【Promise】准备知识
mdn文档: https: //developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Error。例子: 定时器回调 / ajax回调 / Promise的成功|失败的回调。// 同步回调函数,执行完了forEach才能结束,不会放入队列,一上来就要执行完。// Fn是函数对象,()括号左边是函数,.点的左边是对象。// $:jQuery函数对象,调用$函数对象的get方法。
2024-11-06 20:12:21
890
原创 【Ajax】跨域
CORS 是官方的跨域解决方案,它的特点是不需要在客户端做任何特殊的操作,完全在服务器中进行处理,支持 get 和 post 请求。CORS 是通过设置一个响应头来告诉浏览器,该请求允许跨域,浏览器收到该响应以后就会对响应放行。//这里因为是满足同源策略的, 所以 url 可以简写。//3. 将 script 插入到文档中。//1. 创建 script 标签。//2. 设置标签的 src 属性。//获取 result 元素。//修改 p 标签的提示文本。//获取 input 元素。违背同源策略就是跨域。
2024-11-06 11:06:26
941
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人