
JavaScript随想
文章平均质量分 66
Qayrup
我只想卷死在坐的各位或被在座的各位卷死
展开
-
不要直接使用unidefined 而使用void 0
在JavaScript中,undefined 和 void 0 都可以用来表示未定义的值,但它们在使用和上下文中有一些微妙的差异,这也是为什么有时可能会推荐使用 void 0 而不是直接使用 undefined。原创 2024-06-20 11:35:11 · 303 阅读 · 0 评论 -
美化console
控制台(Console)是JS开发里最重要的面板,主要作用是显示网页加载过程中产生各类信息,我们经常使用console.log()这个函数在控制台打印一些东西但是,console这个对象不仅仅有log这个函数,还有很多其他的函数,如下。原创 2024-03-10 19:34:21 · 1145 阅读 · 0 评论 -
js优雅的统计字符串字符出现次数
不对不对,我都用es6写法了,我还整啥对象?我用map啊,哇,还是一行了耶,性能更好了,看起来更酷了呢。如上,虽然这样也能写出来发,但是这种代码都看能得懂,一点也不酷,作为卷狗,就是得写的别人看不懂。没别的意思,只是想卷死在座的各位,或者被在坐的各位卷死,有没有比我还要卷的。如上,reduce这个用的人比较少,应该能让一部分看不懂但是还是有风险。但是这种写法明显丑陋不堪,代码量太多了,一点也不像卷狗写的代码。我们可以试着改进一下,使用数组的foreach。题目如下 统计一串字符串中每个字符出现的频率。原创 2024-03-02 23:38:35 · 451 阅读 · 0 评论 -
JavaScript闭包漏洞与修补措施
但是在实际开发中一般不这么做,因为原型树上可能有别的方法能用得上,所以我们可以在sonObj的方法内加个判断,如果是对象上的成员就让他正常返回,如果不是就返回undefinded,这样,当访问aaa这个属性的时候,sonObj没有这个成员,就会去prototype上找,然后就会调用prototype上的aaa方法,然后就把自己返回出去了,闭包也就破解了。这是一个典型的闭包场景,这样做的目的是为了屏蔽这个obj,不让外边直接访问它,只能读取它的某一个属性,这样就保护了数据的完整性。简单,它不是原型上整活吗?原创 2024-03-02 23:36:24 · 592 阅读 · 0 评论 -
Websocket协议详解
本文主要介绍Websocket是什么以及其协议内容。WebSocket 协议实现在受控环境中运行不受信任代码的一个客户端到一个从该代码已经选择加入通信的远程主机之间的全双工通信。该协议包括一个打开阶段握手规定以及通信时基本消息帧的定义。其基于TCP之上。此技术的目标是为基于浏览器的应用程序提供一种机制,这些应用程序需要与服务器进行双向通信,而不依赖于打开多个HTTP连接(例如,使用XMLHttpRequest或和长轮询)。原创 2024-01-26 22:30:09 · 1051 阅读 · 0 评论 -
webSocket基于面向对象二次封装
当接收到消息时,会调用提供的回调函数,并将解析后的数据作为参数传递给它。在回调函数中,可以打印收到的数据到控制台中。如果订阅失败,则会执行catch回调函数,并打印错误信息到控制台中。当连接成功时,会调用我提供的回调函数,并将连接成功的消息帧作为参数传递给它。在回调函数中,我们可以打印消息帧到控制台中。如果连接失败,则会执行catch回调函数,并打印错误信息到控制台中。今天不睡,熬夜赶了个WebSocket 二次封装,也对这几天文章摸鱼感到抱歉,所以我出了一个注释非常非常全的代码。原创 2023-11-20 22:14:43 · 7998 阅读 · 0 评论 -
深入解析具名导入es6规范中的具名导入是在做解构吗
可以看出,语法非常非常的相似,我们分别打印一下也能看到是一样的。尽管es6的具名导入和语法非常相似。原创 2023-11-19 22:34:40 · 370 阅读 · 0 评论 -
关于跨域问题的个人理解
我也工作蛮多年了,期间既做过前端也做过后端。对于跨域问题,究竟是由前端程序员还是后端程序员来解决,我在不同的时期有不同的理解。现在,我更倾向于认为跨域问题应该由前端程序员来解决,即使在解决跨域问题的过程中涉及到一些服务端的知识。而总的来说,我认为前端程序员应该主导解决跨域问题,尽管可能需要一些服务端的知识。当然以上只是我个人的观点,实际工作中,前端和后端的协作是非常重要的,两者都需要理解和处理跨域问题。原创 2023-11-15 10:03:16 · 9414 阅读 · 1 评论 -
JavaScript中的事件冒泡、事件捕获、事件委托
DOM事件流(event flow )存在三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段。Dom标准事件流的触发的先后顺序为:先捕获再冒泡。即当触发dom事件时,会先进行事件捕获,捕获到事件源之后通过事件传播进行事件冒泡。addEventListener的第三个参数第三个参数默认值是false,表示在事件冒泡阶段调用事件处理函数;如果参数为true,则表示在事件捕获阶段调用处理函数。如果不写第三个参数则默认在事件冒泡阶段调用事件处理函数。原创 2023-11-14 21:30:05 · 16216 阅读 · 0 评论 -
javascript中各种风骚的代码
js中一些有趣的代码原创 2023-10-29 22:59:33 · 16524 阅读 · 0 评论 -
判断函数是否标记async
知道了这个,那也就简单了,我们可以直接判断一下函数的原型链,是function的那就是,没被标记的普通函数,原型链是AsyncFunction的那就是被async标记了的函数,如下,可以看到,普通函数打印的是[object Function],而被async标记了的函数打印的是[object AsyncFunction]可以看到普通函数的原型是function,这是大家都知道的,每一个函数,他的原型是function function的原型是object,我这里直接调用它这个符号属性了,就不绕圈子了,原创 2023-10-24 21:55:34 · 16098 阅读 · 0 评论 -
js关于深度克隆问题
js的克隆是一个老生常谈的内容了,今天没啥好写的,就写这个了要搞清楚js的克隆,就需要先搞清楚js中的数据类型,js中数据类型分为两大类原始类型的拷贝确实相对简单,因为这些类型通常存储在栈上,这意味着它们在内存中占据的空间是固定的,并且可以直接通过指针进行复制。tips:如果你还搞不清楚什么是引用类型,什么是原始类型,可以看我的这篇文章然而,对于引用类型来说,拷贝则要复杂得多。引用类型的对象(例如数组或对象)存储在堆上,这意味着它们在内存中占据的空间是不固定的,并且由垃圾回收器管理。原创 2023-10-24 01:27:02 · 16123 阅读 · 0 评论 -
defineProperty 与 Proxy 的区别
二者在拦截多层对象的操作,也就是深度监听时,都需要递归地操作对象,区别在于 Vue2 在定义时就要完成所有层属性的拦截,而 Vue3 则是到真正使用时,才生成对应的 Proxy 对象。当使用 Obejct.defineProperty 拦截对象的多个属性时,需要遍历对象的所有属性名,依次设置描述符。set 表示该属性的存函数,修改属性值时会调用此函数,并接受一个参数(被赋予的新值)get 表示该属性的取函数,在读取改属性时会执行此函数,函数返回值作为属性的值。原创 2023-10-12 10:16:52 · 16246 阅读 · 0 评论 -
js事件循环详解
JavaScript的事件循环是一种处理异步事件和回调函数的机制,它是在浏览器或Node.js环境中运行,用于管理任务队列和调用栈,以及在适当的时候执行回调函数。事件循环的基本原理是,JavaScript引擎在空闲时等待事件的到来,然后将事件添加到事件队列中。事件循环会不断地检查队列中是否有事件,如果有,则会将事件取出并执行相应的回调函数。事件循环采用单线程模型,因此只有在当前事件处理程序执行完毕后,才能执行下一个事件处理程序。这种机制确保了JavaScript中的代码执行顺序和可预测性。原创 2023-10-12 09:07:06 · 16216 阅读 · 0 评论 -
js惰性函数 ----如何让函数执行之后只执行函数某一部分
这种技术被称为“惰性函数”或“延迟执行”。它的核心思想是在函数首次调用时,根据不同的输入参数,函数的行为会被修改并确定下来,以避免在后续调用中再次执行完整的计算流程。这样可以提高程序的执行效率,并使代码更加简洁。原创 2023-09-23 10:29:08 · 18666 阅读 · 0 评论 -
常见的拖拽效果,以及最新的h5拖拽效果及其原理解析
首先是使用h5的api实现拖拽排序效果需要实现的效果原理解析这是因为使用了h5的 draggable属性,页面中设置了 draggable=“true” 属性的元素可以进行拖拽示例如下效果示例给 box1 增加了draggable=“true” 属性之后, box1 就变成可以拖拽的了。但是拖拽之后要做什么事情?就涉及到事件监听。拖拽元素的事件监听:(应用于拖拽元素)演示一下效果展示请忽略那些报错,那是浏览器插件的报错。原创 2023-09-12 10:26:10 · 23396 阅读 · 0 评论 -
js优雅的统计字符串字符出现次数
不对不对,我都用es6写法了,我还整啥对象?我用map啊,哇,还是一行了耶,性能更好了,看起来更酷了呢。如上,虽然这样也能写出来发,但是这种代码都看能得懂,一点也不酷,作为卷狗,就是得写的别人看不懂。没别的意思,只是想卷死在座的各位,或者被在坐的各位卷死,有没有比我还要卷的。如上,reduce这个用的人比较少,应该能让一部分看不懂但是还是有风险。但是这种写法明显丑陋不堪,代码量太多了,一点也不像卷狗写的代码。我们可以试着改进一下,使用数组的foreach。题目如下 统计一串字符串中每个字符出现的频率。原创 2023-08-30 22:14:23 · 22530 阅读 · 0 评论 -
JavaScript最牛逼代码语句
为什么说这个表达式是最牛逼的表达式呢?我们把它放浏览器内执行一下。那它为什么会输出这么一个玩意儿呢,我们先把它拆解一下。下面这段代码是JavaScript中最牛逼的表达式。可以看出这是一个取下标的表达式,括号内的。输出如下,怎么样,牛不牛逼。原创 2023-08-27 15:22:49 · 22230 阅读 · 4 评论