![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
前端知识杂合
文章平均质量分 61
京城五
这个作者很懒,什么都没留下…
展开
-
JavaScript ES6 Map
Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。原创 2024-08-14 11:35:07 · 143 阅读 · 0 评论 -
JavaScript ES6 Symbol
Symbol.for() 类似单例模式,首先会在全局搜索被登记的 Symbol 中是否有该字符串参数作为名称的 Symbol 值,如果有即返回该 Symbol 值,若没有则新建并返回一个以该字符串参数为名称的 Symbol 值,并登记在全局环境中供搜索。Symbol.keyFor() 返回一个已登记的 Symbol 类型值的 key ,用来检测该字符串参数作为名称的 Symbol 值是否已被登记。由于每一个 Symbol 的值都是不相等的,所以 Symbol 作为对象的属性名,可以保证属性不重名。原创 2024-08-13 17:31:24 · 90 阅读 · 0 评论 -
JavaScript reduce() 方法
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。reduce() 可以作为一个高阶函数,用于函数的 compose。第二个参数initialValue是可选的,是传递给函数的初始值。reduce() 对于空数组是不会执行回调函数的。第一个参数function是必需的。原创 2024-08-08 22:43:45 · 189 阅读 · 0 评论 -
JavaScript flat() 方法
flat() 方法方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。flat() 方法被用于将嵌套数组 nestedArray 扁平化成一维数组。depth参数是指定要提取嵌套数组的结构深度,默认值是1。原创 2024-08-08 21:51:19 · 185 阅读 · 0 评论 -
JavaScript 类(class)super关键字
在构造函数中使用,super关键字将单独出现,并且必须在使用this关键字之前。super关键字用于访问和调用一个对象的父对象上的函数。super关键字也可以用来调用父对象上的函数。原创 2024-08-08 16:20:17 · 181 阅读 · 0 评论 -
JavaScript中的类数组
在一个获取ul内容并排序的时候发现无法对返回的对象进行排序。类数组,Array-like,typeof返回object。类数组必须有length属性,可以通过length遍历该对象。类数组中的元素属性名必须是数字或者是可以转化为数字的字符。// 没有 length 属性,则返回空数组0: '1',1: '2',2: 3,});// []原创 2024-04-22 23:34:18 · 227 阅读 · 0 评论 -
javascript中的防抖与节流
防抖与节流本质上是优化高频率执行代码的一种手段。浏览器中的一些事件(resize,scroll,keypress,mousemove)等在触发时,会不断地调用绑定在事件上的回调函数,极大的浪费资源,降低前端性能。为了优化体验,需要对这类事件进行调用次数的限制,对此我们可以采用防抖(的bounce)和节流(throttle)的方式来减少调用频率。防抖:n秒后再执行该事件,如果在n秒内被重复触发,则重新计时。(回城,被打断重新吟唱)节流:n秒内只执行一次,如果在n秒内被重复触发,则只有一次生效。原创 2024-01-02 17:28:10 · 326 阅读 · 1 评论 -
javascript中的事件循环
javascript是一门单线程语言,单线程可以用事件循环的方法实现不阻塞。同步任务:立即执行的任务,同步任务一般会直接进入到主线程中执行。异步任务:异步执行的任务,比如ajax网络请求,setTimeout定时函数等。同步任务进入主线程,即主执行栈,异步任务进入任务队列,主线程内的任务执行完毕为空,回去任务队列读取对应的任务,推入主线程执行,上述过程的不断重复就是事件循环。原创 2023-12-17 21:05:11 · 55 阅读 · 1 评论 -
javascript中字符串和数组的常用方法
主要从增删改查四个方面来讲,字符串需要注意的是一旦字符串被创建了就是不可变的,数组需要注意的是有改变原数组和不改变原数组的两大类方法。原创 2023-12-16 23:47:41 · 32 阅读 · 1 评论 -
javascript中的函数缓存
函数缓存就是将函数运算过的结果进行缓存,本质上是用空间(缓存储存)换时间,常用于缓存数据计算结果和缓存对象。// 函数缓存// 30// 30 缓存缓存只是一个临时的数据存储,它能保存数据,以便将来对该数据的请求能够被更快得处理。原创 2023-12-16 21:13:40 · 113 阅读 · 1 评论 -
javascript中的深拷贝和浅拷贝
javascript中有两种数据类型:基本类型和引用类型。其中基本类型数据保存至栈内存中,引用类型数据保存在堆内存中,引用数据类型的变量是一个指向堆内存中实际对象的引用,存在栈中。深拷贝是开辟一个新的栈,两个对象属性完全相同, 但是对应两个不同的地址,修改一个对象的属性,不会对另一个对象的属性造成影响。如果属性是基本类型,拷贝的就是基本类型的值;如果是引用类型,拷贝的是内存地址。即拷贝一层,深层次的引用类型则共享内存地址。浅拷贝是指创建一个新的数据,整个数据是原始数据属性值的一个精确拷贝。原创 2023-12-15 21:59:41 · 84 阅读 · 0 评论 -
javascrit中的闭包
一个函数和对其周围状态(lexical environment词法环境)的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包(closure)。闭包使得一个内层函数可以访问到其外层函数的作用域。在javascript中,创建函数的同时就会创建一个闭包来联接函数的内部和外部。// name是一个被init创建的局部变量function displayName() { // displayName()是一个内部函数,是一个闭包// 使用了父级函数中声明的变量// Mozillainit();原创 2023-12-15 21:14:12 · 22 阅读 · 0 评论 -
javascript中的事件代理
适合使用事件委托的有:click,mousedown,mouseup,keydown,keyup,keypress。坚守整个页面所需的内存,提升整体性能动态绑定,减少重复工作focus,blur这些事件没有事件冒泡机制,无法进行事件绑定。mousemove,mouseout这种事件有事件冒泡机制,但是通过不断计算位置去定位,对性能消耗很大,不适合用事件委托。这些事件如果用事件代理,可能出现事件误判,在不该触发的元素上绑定了事件。原创 2023-12-15 18:27:08 · 349 阅读 · 0 评论 -
bind和call和apply
三种方法都可以改变函数的this对象指向。三种方法都是第一个参数是this将要指向的对象,如果没有这个参数或者这个参数是null或者undefined则默认指向window。三者都可以传参,但是apply传入的是数组,call和bind传入的是参数列表。apply是一次性传入,而bind可以分为多次传入。bind是返回绑定this之后的函数,而apply和call是立即执行。原创 2023-12-14 14:08:28 · 363 阅读 · 1 评论 -
new操作符
new通过构造函数Person创建出阿里的实例可以访问到构造函数中的属性,和构造函数原型链中的属性(即实例与构造函数通过原型链连接了起来)。当构造函数中显示返回,如果返回值是一个原始类型,没有什么作用,如果返回值是一个对象,这个返回值会被正常调用。new操作符用于创建一个给定构造函数的实例对象。原创 2023-12-13 22:19:57 · 19 阅读 · 0 评论 -
javascript中的this
函数的this关键字在javascript中表现略由不同,在严格模式和非严格模式之间也有一些差别。在绝大多数情况下,函数的调用方式决定了this的值(运行时绑定)。this关键字时函数运行时自动生成的一个内部对象,只能在函数内部使用,总之想调用它的对象。// 当前的调用栈是:baz// 因此,当前调用位置是全局作用域bar();// <-- bar的调用位置// 当前的调用栈是:baz --> bar// 因此,当前调用位置在baz中foo();// <-- foo的调用位置。原创 2023-12-13 21:31:51 · 20 阅读 · 0 评论 -
javascript中的作用域
在javascript中使用一个变量的时候,会从当前作用域开始寻找,如果没有找到,再到上层作用域寻找,以此类推直到找到该变量或者已经到全局作用域,如果仍然找不到,会在全局范围内隐式声明该变量(非严格模式下)或是直接报错。这些变量只能在函数内部访问,不能在函数以外去访问。任何不在函数中,或者是不在大括号中声明的变量,都是在全局作用域下,全局作用域下声明的变量可以在程序的任意位置访问。在函数内部声明的变量或函数,在函数外部是无法访问的,函数内定义的变量或者方法只是函数作用域。原创 2023-12-13 18:34:14 · 24 阅读 · 0 评论 -
typeof和instanceof
具体来说,变量声明是指使用var、let或const关键字声明一个变量,而变量定义是指为该变量赋值。需要注意的是,在ES6之前,JavaScript中只有var关键字可以用于变量声明,而在ES6中新增了let和const关键字。两种方法都有弊端,不能通用,Object.prototype.toString可以通用,调用该方法,返回的是同一个字符串,格式是"[object Xxx]"。如果要判断一个变量是否存在,可以用typeof,但是不能用if,在变量未声明的时候,if会报错。原创 2023-12-13 15:56:20 · 19 阅读 · 0 评论 -
== 和 ===
相等运算符发隐藏类型转换会在一些情况下导出反直觉的结果。在比较null的情况时,一般使用相等操作符。//执行//等同于下面的写法...使用相等操作符的写法更加简洁。在比较对象的属性为null或者undefined的情况下用相等操作符,其余情况都用全等操作符。原创 2023-12-13 11:15:38 · 26 阅读 · 0 评论 -
常见的DOM操作
文档对象模型(DOM)是HTML和XML文档的编程接口它提供了对文档的结构化的表述,并定义了一种方式可以使从程序中对该结构进行访问,从而改变文档的结构,样式和内容。任何HTML或XML文档都可以用DOM表示为一个由节点构成的层级结构。原创 2023-11-17 17:50:11 · 32 阅读 · 0 评论 -
JavaScript手写new
/ 1.创建一个新的对象// 2.新对象原型指向构造函数的原型对象// 3.将构造函数的this指向新的实例对象// 4.根据返回值判断,如果是原始类型则忽略,如果是对象则正常实现。原创 2023-11-02 20:29:19 · 44 阅读 · 0 评论 -
JavaScript的数据类型
JavaScript的零散知识点。原创 2023-11-02 17:12:22 · 41 阅读 · 1 评论