JavaScript 中 this 关键字的作用和如何改变其上下文
JavaScript 中的 this 关键字引用了所在函数正在被调用时的对象。在不同的上下文中,this 的指向会发生变化。可以通过 call, apply, bind 方法来改变 this 的上下文。 ...
JavaScript 中断 forEach 循环
1、使用 Array.prototype.some() 方法代替 some() 方法会在找到第一个符合条件的元素时停止循环。 例如: let array = [1, 2, 3, 4, 5]; array.some(function(element, index, array) { if (eleme ...
JavaScript 判断变量的类型
JavaScript 中有多种方法来判断变量的类型,如 typeof、instanceof、Object.prototype.toString.call()、constructor属性、Symbol.toStringTag属性以及 lodash 等第三方库 ...
JavaScript 浅拷贝和深拷贝
JavaScript 中的拷贝分为两种:浅拷贝和深拷贝。
浅拷贝是指在拷贝过程中,只拷贝一个对象中的指针,而不拷贝实际的数据。所以,浅拷贝中修改新对象中的数据时,原对象中的数据也会被改变。
深拷贝是指在拷贝过程中,拷贝一个对象中的所有数据,并创建一个新对象,对新对象进行操作并不会影响到原对象。 ...
JavaScript 二分查找
二分查找(Binary Search)是一种在有序数组中查找目标元素的查找算法。它的基本思路是:在数组的中间元素开始,如果该元素等于目标元素,则查找成功;如果该元素大于目标元素,则在左半部分继续查找;如果该元素小于目标元素,则在右半部分继续查找。这样一直重复这个过程,直到查找成功或者查找失败。 ...
JavaScript 面向切面编程(AOP,装饰者模式)
JavaScript 面向切面编程 (AOP) 是一种编程思想和实现方式,它将一些关注点(例如日志记录、安全性检查、性能监控等)从主题对象中分离出来,通过“横切关注点”的方式在程序中动态地织入这些关注点。这样可以避免在主题对象中嵌入大量的关注点代码,使得代码更加简洁和可维护。 ...
JavaScript 原型和原型链
JavaScript 是一种基于原型继承的语言。在 JavaScript 中,对象是通过原型链来继承属性和方法的。 一、原型 每一个对象都有一个 proto 属性,该属性指向该对象的原型。原型本质上也是一个对象,所有的对象都拥有一个原型,除了 Object.prototype。 JavaScript ...
P1005 [NOIP2007 提高组] 矩阵取数游戏
题目传送门 前言 今天依旧是不写高精的一天呢!(是的,这位作者又只拿了开 $LL$ 的 $\color{yellow}{60}$ 分) 思路描述 看到数据 $n,m \le 80(30)$ 就知道数组可以任性开,心理有个底后,再来看题目。 状态描述 首先肯定要来一个 $dp_{i,j}$ 来表示第 ...
JavaScript 获取对象长度
JavaScript 中,对于普通对象,不能直接使用 length 来获取对象的长度,因为 JavaScript 对象并不是一种有序的集合,没有长度的概念。
对于数组或者类数组对象,可以使用 .length 来获取它们的长度,因为它们是有序集合。
对于字符串也可以使用.length来获取长度,因为字... ...
JavaScript 图像压缩
JavaScript 可以使用类似于 canvas 和 web workers 来实现图像压缩。
使用 canvas,可以将图像绘制到 canvas 上,然后使用 canvas 提供的 toBlob() 或 toDataURL() 方法将其转换为不同格式的图像。在这些方法中指定图像质量参数即可实现压... ...
JavaScript 中URL 查询字符串(query string)的序列与反序列化
方法一: 在 JavaScript 中,可以使用 URLSearchParams 对象来处理 URL 中的查询字符串。 序列化(将 JavaScript 对象转换为查询字符串)可以使用 URLSearchParams 对象的 append() 方法,如下所示: let params = new UR ...
JavaScript 防抖和节流
JavaScript 防抖和节流是两种常见的性能优化技术,用于减少函数的执行次数。
防抖(debounce)是指在一段时间内,如果有多次触发事件,则只执行最后一次事件。
节流(throttle)是指在一段时间内,只执行一次事件。 ...