js面试
文章平均质量分 66
微醉~
这个作者很懒,什么都没留下…
展开
-
静态属性和静态方法
我们可以把一个方法作为整体赋值给一个类。这样的方法就被称之为静态的(static)。在一个类中,需要通过static 关键字对该方法进行静态说明:上述操作其实等同于直接将其作为属性赋值:在Person.sayName()调用的this的值就是类构造器Person本身。通常,静态方法用于实现属于整个类,但不属于该类任何特定对象的函数。例如,我们有一个对象Articel,并且我们需要有一个方法来比较它们。通常的解决方案就是添加一个Articel.compare静态方法:这里的Article.comp原创 2022-07-06 15:22:40 · 1026 阅读 · 0 评论 -
JavaScript----Promise
需求:通过ajax请求id,再通过id请求用户名,再根据用户名获取用户的联系方式Promise的出现就是为了解决回调地狱的问题。Promise本质是一个构造函数,可以通过 “new”关键字实例化对象Promise接受一个函数作为参数;再这个函数中可以接受两个参数resolve和rejected:resolve:如果任务成功完成并带有结果 value。reject:如果出现了 error,error 即为 error 对象。Promise实例属性:state:状态pendin原创 2022-06-25 14:36:31 · 240 阅读 · 0 评论 -
JavaScript——闭包
闭包 指的是那些引用了另一个函数作用域中变量的函数,通常是在嵌套函数中实现的。 ——摘录自《JavaScript高级程序教程》二、闭包的产生条件当前函数执行会形成一个私有的执行上下文,函数执行完毕之后,这个私有执行上下文中的某些变量或方法被该上下文以外的上下文所占用,导致该函数私有上下文无法被释放从而就形成了所谓的————闭包可以读取或储存函数内部的变量;可以用于封装私有变量;三、闭包的缺点由于闭包会使得函数中的变量都被保存在内存中,内存消耗很⼤,所以不能滥⽤闭包,否则会造成⽹页的原创 2022-06-24 21:48:56 · 148 阅读 · 0 评论 -
node模块化与中间件
在Node.js中,中间件主要是封装所有的Http请求细节处理的方法。一次Http请求通常涵盖了很多的工作(记录日志、ip过滤、查询字符串、请求体解析、Cookie处理…),但是对于Web而言,并不希望接触到这些处理,因此我们需要引入中间件来简化和隔离这些基础设施与业务逻辑之间的细节,让开发者能够关注在业务开发上,以此来提高开发效率。中间件的行为类似于axios中的拦截器,在正式进入逻辑业务之前可以让拦截器进行处理。中间件机制核心实现4中间件时从Http请求发起到响应借书过程中的处理方法,通常要对请求和原创 2022-06-21 12:24:46 · 182 阅读 · 0 评论 -
js事件循环
事件循环概念: 在JavaScript中的事件循环简单理解就是js引擎的状态无限转换(等待任务=> 执行任务 => 进入休眠 => 等待任务)当我们从外部引入一个js文件时,js引擎会先对文件进行加载;加载完成之后执行的一个任务,然后进入休眠状态等待下一个任务下发继续执行…如果有setTimeOut任务(异步)时会有什么样的事情发生呢?从时间循环的概念我们可以看出,JavaScript在执行时会形成一个队列,先进入队列的任务会率先执行,后进入的只能等待前面的任务执行完毕之后在执行。这个队列被称之为 宏任务原创 2022-06-13 13:36:38 · 100 阅读 · 0 评论 -
javascript中继承的几种方式
在实际编码的过程中,如果有很多类似的方法都存放于构造函数中,这样会导致内存的浪费(内存泄漏),在这种情况下我们就需要用到继承。所谓继承就是通过某种方式让一个对象可以访问到另一个对象中的属性和方法。通过实例化一个函数使子类的原型指向父类的实例,子类就可以调用到父类的属性和方法。代码实现如下:要注意的问题1.不要忘记默认的类型:在js中所有的引用类型都继承了Object,而继承也是通过原型链实现的。所有存在于Object原型对象上的方法同样也存在。比如:hasOwnProperty()、toString(原创 2022-06-12 17:33:47 · 4031 阅读 · 0 评论 -
ES6语法之——class
在面向对象的编程中,class 是用于创建对象的可扩展的程序代码模版,它为对象提供了状态(成员变量)的初始值和行为(成员函数或方法)的实现。使用场景:在日常开发中,我们经常需要创建许多相同类型的对象,例如用户(users)、商品(goods)或者任何其他东西。正如关键字new可以帮助我们实现这种需求。但在现代 JavaScript 中,还有一个更高级的“类(class)”构造方式,它引入许多非常棒的新功能,这些功能对于面向对象编程很有用。基本语法:然后我们使用new MyClass()来创建拥有上述方原创 2022-06-12 14:46:49 · 673 阅读 · 0 评论 -
浅谈操作符new
场景:我们经常需要创建很多类似的对象,例如多个用户或菜单项等。这可以使用构造函数和 操作符来实现。构造函数:构造函数在技术层面上来说也是一种常规函数,只不过在使用过程中有两个约定:那么当我们使用new关键字的时候都都经历了哪些步骤呢?注意:new关键字后面的构造函数不能是箭头函数——(详情查询this指向文章)......原创 2022-06-12 13:45:02 · 101 阅读 · 0 评论 -
promise 和async await的区别
promise 和async await的区别原创 2022-06-12 13:24:43 · 1466 阅读 · 0 评论 -
手写JS防抖和节流(面试高频)
什么是防抖?首先我们想象一下这个场景,如果在一个区域内设置鼠标移动事件,那一旦我们将鼠标移入这个区域内,这个事件就会被持续触发,导致每次改变都会重新渲染一次页面让性能损耗很大,这种情况下我们就需要用到防抖,那究竟什么是防抖呢? 触发高频事件后一段时间内函数只会执行一次,如果这段时间内高频事件再次被触发,则重新计算时间;上述代码中在3s内如果触发了onmousemove时间就会清除定时器重新开始计时。防抖使用应用场景:什么是节流?在一段时间内一直触发某个函数,每隔一段时间该函数只执行一次。通常我们实现原创 2022-06-12 12:14:14 · 192 阅读 · 0 评论 -
js中的this指向
他们的作用都是用于改变this的指向问题,可是具体有什么区别呢?call方法:改变函数内部的this指向,call()方法调用一个对象。简单理解为调用函数的方式,但是它可以改变函数的this指向。 上述代码中使用了call()来实现了继承,第一个参数为想要指向的对象。apply方法:apply()方法调用一个函数。简单理解为调用函数的方式,但是它可以改变函数的this指向。我们可以使用apply方法来求出数组中最大值:apply方法有两个参数:this指向。(this可能不是该方法看到的实际值:原创 2022-06-12 11:49:36 · 63 阅读 · 0 评论