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