你不知道的JavaScript
文章平均质量分 58
研究各种常见但是不容易解决的问题,由浅入深,深度解析
bbamx.
基础扎实,喜欢研究
展开
-
彻底弄懂JS中的并发模型与事件循环
这为程序的分析提供了一些优秀的特性,包括:当一个函数执行时,它不会被抢占,只有在它运行完毕之后才会去运行任何其他的代码,才能修改这个函数操作的数据。这个模型的一个缺点在于当一个消息需要太长时间才能处理完毕时,Web 应用程序就无法处理与用户的交互,例如点击或滚动。一个良好的习惯是缩短单个消息处理时间,并在可能的情况下将一个消息裁剪成多个消息。所以当一个带有点击事件处理器的元素被点击时,就会像其他事件一样产生一个类似的消息。期间的某个时刻,运行时会从最先进入队列的消息开始处理队列中的消息。原创 2024-04-09 09:26:03 · 869 阅读 · 0 评论 -
JavaScript判断数据类型(Array、Map、Set、Date、RegExp、Function、String、Symbol、Object、Promise)全网最全
【代码】JavaScript判断数据类型(Array、Map、Set、Date、RegExp、Function、String、Symbol、Object、Promise)全网最全。原创 2024-03-29 13:39:13 · 326 阅读 · 0 评论 -
JavaScript内存管理详细介绍
像 C 语言这样的底层语言一般都有底层的内存管理接口,比如malloc()和free()。相反,JavaScript 是在创建变量(对象,字符串等)时自动进行了分配内存,并且在不使用它们时“自动”释放。释放的过程称为垃圾回收。这个“自动”是混乱的根源,并让 JavaScript(和其他高级语言)开发者错误的感觉他们可以不关心内存管理。所有语言第二部分都是明确的。第一和第三部分在底层语言中是明确的,但在像 JavaScript 这些高级语言中,大部分都是隐含的。原创 2024-03-29 09:58:13 · 1025 阅读 · 0 评论 -
JavaScript中作用域与闭包深入解析
其实际结果是在这段代码周围创建了一个作用域气泡,这意味着现在在这段代码中的任何声明都将绑在这个新的包装函数的作用域上,而不是前一个包含它们的作用域。它们简单地使用这里讲解的作用域规则,来强制标识符不会被注入任何共享的作用域,而是保持在私有的,不易冲突的作用域中,这防止了任何意外的作用域冲突。虽然函数是最常见的作用域单位,而且当然也是在世面上流通的绝大多数 JS 中最为广泛传播的设计方式,但是其他的作用域单位也是可能的,而且使用这些作用域单位可以导致更好、对于维护来说更干净的代码。这几乎仅仅是文体上的选择。原创 2024-03-27 13:23:34 · 821 阅读 · 0 评论 -
深入理解JavaScript中的继承与原型链
请注意,下面的代码是独立的(出于严谨,假设页面没有其他的 JavaScript 代码)。当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及原型的原型,依次层层向上搜索,直到找到一个名字匹配的属性或到达原型链的末尾。对于使用过基于类的语言(如 Java 或 C++)的开发者来说,JavaScript 实在是有些令人困惑——JavaScript 是动态的且没有静态类型。来改变所有实例的行为。这是不够好的,因为每一个实例都有自己的,做相同事情的函数属性,这是冗余且不必要的。原创 2024-03-26 13:12:34 · 146 阅读 · 0 评论 -
IntersectionObserver深入详解及使用方法
一个包含阈值的列表,按升序排列,列表中的每个阈值都是监听对象的交叉区域与边界区域的比率。的矩形偏移量,可以有效的缩小或扩大根的判定范围从而满足计算需要。此属性返回的值可能与调用构造函数时指定的值不同,因此可能需要更改该值,以匹配内部要求。被创建,则无法更改其配置,所以一个给定的观察者对象只能用来监听可见区域的特定变化值;对象被创建时,其被配置为监听根中一段给定比例的可见区域。对象,当其监听到目标元素的可见部分(的比例)超过了一个或多个。(threshold)时,会执行指定的回调函数。开始监听一个目标元素。原创 2024-03-25 13:16:16 · 432 阅读 · 0 评论 -
关于手写unshift方法
类数组和普通数组的区别?类数组中没有普通数组中常用的方法,例如unshift、pop、push等,因为普通数组的隐式原型(__proto__)是执行Array,使用上面的方法时会从原型上面查找。当一个数组的隐式原型(__proto__)Object的时候就可以证明这是一个类数组。argument里面存储了所有传递过来的参数,是一个类数组,// 遍历原数组的长度 加上 传递过来参数的长度。// 把原数组中的元素放入新数组的最后。// 从前开始给新数组赋值。// 遍历传递进来的数组。// 定义一个新数组。.原创 2022-08-14 21:59:28 · 244 阅读 · 0 评论 -
JavaScript手写数组filter()方法
原生JS手写数组filter方法原创 2022-08-27 21:36:12 · 308 阅读 · 0 评论 -
JS中对象的浅拷贝和深拷贝 原生JS手写对象浅拷贝和深拷贝
JS中实现对象的深拷贝原创 2022-08-24 09:45:10 · 132 阅读 · 0 评论 -
JavaScript插入排序
JavaScript插入排序原创 2022-08-27 21:31:27 · 176 阅读 · 0 评论 -
JS中数组的splice()方法介绍 及 用原生JS手写数组splice()方法
JS中数组的splice()方法 及 用原生JS手写数组splice()方法原创 2022-08-23 23:16:14 · 4560 阅读 · 1 评论 -
JavaScript中innerHTML和innerText和textContent的区别
演示innerHTML和innerText和textContent的区别 11 1. innerHTML会识别html标签,并且会根据html结构输出,输出内容如下: 演示innerHTML和innerText和textContent的区别 112. innerText不会识别html标签,不管html结构是什么样,会把输出的内容变成一行,输出内容如下: 演示inne...原创 2022-07-07 20:13:38 · 434 阅读 · 0 评论