随笔分类 -  javascript

摘要:Promise.all 是一个静态方法,用于处理多个 Promise 对象。它会接收一个 Promise 对象数组作为参数,返回一个新的 Promise 对象,该 Promise 对象在所有 Promise 对象已完成时才会完成,并携带着所有 Promise 对象完成的结果(按照 Promise 对 阅读全文
posted @ 2023-07-23 17:15 kitebear 阅读(38) 评论(0) 推荐(0)
摘要:在 JavaScript 中,当一个函数被调用时,会创建一个执行上下文(execution context),该上下文中包含函数的作用域(scope),并将其推入执行上下文栈(Execution Context Stack)中进行管理。当函数执行完毕时,其对应的执行上下文会被弹出执行上下文栈,该函数 阅读全文
posted @ 2023-07-21 08:12 kitebear 阅读(56) 评论(0) 推荐(0)
摘要:## 什么是`Symbol`😶‍🌫️ `Symbol`作为原始数据类型的一种,表示独一无二的值,在之前,对象的键以字符串的形式存在,所以极易引发键名冲突问题,而`Symbol`的出现正是解决了这个痛点,它的使用方式也很简单。 ## `Symbol`的使用 创建一个`Symbol`与创建`Obje 阅读全文
posted @ 2023-07-21 08:12 kitebear 阅读(39) 评论(0) 推荐(0)
摘要:for...in和for...of可以用于循环遍历JavaScript对象和数组等可迭代对象。 for...in是用于遍历对象的属性,循环变量是对象的属性名(字符串类型)。它遍历对象自身所有可枚举的属性,包括从原型链中继承的属性,但是遍历的顺序是不确定的。例如: ```javascript 复制le 阅读全文
posted @ 2023-06-26 09:46 kitebear 阅读(30) 评论(0) 推荐(0)
摘要:```JS const combineAsyncError = tasks => { const doGlide = {} const handler = res => { doGlide.out = res // 预先定义好生成器 doGlide.node = (function*(){ cons 阅读全文
posted @ 2023-06-26 09:46 kitebear 阅读(18) 评论(0) 推荐(0)
摘要:html2canvas 是一种将 HTML 元素转换为 canvas 元素的 JavaScript 库,它的原理是通过遍历 HTML 元素,将元素的内容绘制到 offscreen 的 canvas 上,最终通过 canvas 的 toDataURL 方法将其转换成图片格式。 具体的实现流程如下: 1 阅读全文
posted @ 2023-06-25 09:48 kitebear 阅读(325) 评论(0) 推荐(0)
摘要:为什么js引擎是单线程? js的主要用途是与用户互动,以及操作DOM,这决定它只能是单线程。例:一个线程要添加DOM节点,一个线程要删减DOM节点,容易造成分歧。 为了更好使用多CPU,H5提供了web Worker 标准,允许js创建多线程,但是子线程受到主线程控制,而且不得操作DOM。 说说进程 阅读全文
posted @ 2023-06-25 09:47 kitebear 阅读(31) 评论(0) 推荐(0)
摘要:在 JavaScript 中,最大安全整数是2^53-1,即9007199254740991。这是因为在 JavaScript 中,整数和浮点数的存储方式是一样的,都是采用 IEEE 754 双精度浮点数表示,但整数必须存储在 53 位之内。 超出最大安全整数范围的数字将无法被准确表示,可能会发生误 阅读全文
posted @ 2023-06-19 09:34 kitebear 阅读(271) 评论(0) 推荐(0)
摘要:call和apply都是function原型上的方法,每一个函数作为function的实例都可以调用这两个方法, 这两个方法的目的都是改变函数的this指向并且让函数执行的。 唯一的区别就是**call时需要一个个传参数,而apply时将参数以数组的形式进行传递**。 阅读全文
posted @ 2023-06-19 09:34 kitebear 阅读(48) 评论(0) 推荐(0)
摘要:进程(Process)和线程(Thread)都是操作系统中用于多任务处理的概念。简单地说,一个进程就是一个程序的执行空间,而一个线程则是在执行空间内独立运行的执行路径。 区别: 1. 进程是系统分配资源的最小单位,线程是操作系统调度的最小单位。 2. 各个进程之间是独立的,各个线程之间共享一些资源。 阅读全文
posted @ 2023-06-16 14:39 kitebear 阅读(159) 评论(0) 推荐(0)
摘要:当谈到继承时,JavaScript 只有一种结构:对象。每个实例对象(object)都有一个私有属性(称之为 __proto__)指向它的构造函数的原型对象(**prototype**)。该原型对象也有一个自己的原型对象(__proto__),层层向上直到一个对象的原型对象为 `null`。根据定义 阅读全文
posted @ 2023-06-16 14:39 kitebear 阅读(7) 评论(0) 推荐(0)
摘要:`addEventListener` 是给一个 DOM 元素添加事件监听器的方法,可以在元素上绑定响应函数以便在特定事件发生时被调用。 `addEventListener` 的最后一个参数是一个布尔值,用来指定事件监听器应该以哪种方式处理。具体来说,这个参数有两种取值: 1. `true`,表示在捕 阅读全文
posted @ 2023-06-12 13:36 kitebear 阅读(88) 评论(0) 推荐(0)
摘要:在 JavaScript 中,`null` 和 `undefined` 都表示空值,但它们有着不同的含义和用途。 `undefined` 表示不存在、未定义或者缺失。它是一个原始数据类型,在以下情况下会出现: - 变量被声明但没有赋值 - 访问对象属性不存在或未定义 - 函数参数未传递 而 `nul 阅读全文
posted @ 2023-06-12 13:36 kitebear 阅读(211) 评论(0) 推荐(0)
摘要:判断循环引用的方式主要有两种: 1. 可以使用 JSON.stringify() 方法将对象转为字符串,在转化过程中,JSON.stringify() 方法会检测对象中是否存在循环引用。如果存在循环引用,则转化会出现异常,捕获到异常后即可判断出对象中存在循环引用。 ```javascript let 阅读全文
posted @ 2023-06-05 06:26 kitebear 阅读(497) 评论(1) 推荐(0)
摘要:JavaScript 有很多种方法可以向数组中插入数据,以下列举了几种常用的方法: 1. push():向数组末尾添加一个或多个元素。 ```javascript 复制let arr = [1, 2]; arr.push(3); console.log(arr); // [1, 2, 3] ``` 阅读全文
posted @ 2023-06-05 06:26 kitebear 阅读(2623) 评论(0) 推荐(0)
摘要:Blob 是一种 JavaScript 数据类型,表示了不可变的二进制数据(即二进制大对象)。Blob 可以存储各种类型的数据,例如文本、图像、音频等等。 Blob 对象包含三个属性:size、type 和 slice()。size 属性表示 Blob 对象的数据大小(单位是字节),type 属性表 阅读全文
posted @ 2023-06-03 19:43 kitebear 阅读(301) 评论(0) 推荐(0)
摘要:数组去重是前端开发中比较常见的问题,有多种方法可以实现: 1. 使用 Set 去重(ES6) ``` const arr = [1, 1, 2, 3, 4, 4, 5]; const uniqueArr = [...new Set(arr)]; console.log(uniqueArr); // 阅读全文
posted @ 2023-06-03 19:42 kitebear 阅读(34) 评论(0) 推荐(0)
摘要:requestAnimationFrame 是一个用于优化浏览器动画效果的 API。它可以让浏览器在下一次重绘前执行指定的回调函数,从而可以更加流畅地执行动画效果,避免了使用 setTimeout 或 setInterval 可能引起的性能问题。 requestAnimationFrame 的用法非 阅读全文
posted @ 2023-06-01 22:23 kitebear 阅读(341) 评论(0) 推荐(0)
摘要:`__proto__` 和 `prototype` 是不同的概念,它们不应该被混淆或等同使用。 `prototype` 是函数对象(Function)特有的一个属性,函数对象通过它来实现对象的继承。函数对象的 `prototype` 属性指向一个原型对象,该原型对象在创建实例对象时会被作为实例对象的 阅读全文
posted @ 2023-06-01 22:23 kitebear 阅读(44) 评论(0) 推荐(0)
摘要:JavaScript 有七种基本数据类型,分别如下: 1. 数字(Number)类型:整数和浮点数的统称,用于表示数值。 2. 字符串(String)类型:由零个或多个字符组成的序列,用于表示文本。 3. 布尔(Boolean)类型:只有 true 和 false 两个取值,用于表示逻辑上的真假。 阅读全文
posted @ 2023-05-31 07:29 kitebear 阅读(28) 评论(0) 推荐(0)