Published on2023年9月19日浅拷贝JavaScript面试前端那么经常会有人说赋值也是浅拷贝,其实这种说法是不严谨的,因为赋值本质上只是同一个引用,并不是真正的浅拷贝。 浅拷贝只复制一层对象的属性,并不会进行递归复制,而在浅拷贝之后,源对象与目标对象的引用已经不是同一块内存空间。 JavaScript 存储对象都是存储地址的,浅拷贝导致更深一层的对象可能会指向同一个内存地址。
Published on2023年9月18日函数防抖和函数节流JavaScript前端面试函数节流高频触发事件,在 n 秒内只会执行一次,所以节流会稀释函数执行的频率。举个例子,古时候人们治水,一般都是直接用堵起来的水坝,把水堵住。但是后来发现,堵不如疏,你不能让水越聚越多,而是要选择减缓水流的速度。那么在 JS 中其实就在减少高频事件执行的频率,降低性能消耗。实现思路首先我们定义一个标记,当标记为 true 的时候执行函数,然后呢,我们在闭包里去判断如果这个标记为 fal..._js 一秒内不触发两次
Published on2023年9月14日继承的方式JavaScript面试前端什么是继承对于继承这个概念来说大家都不陌生,在现实中有儿子继承父业,孙子继承了爷爷的财产等等。那么在编程中,我们熟知的继承其实主要来自于面向对象编程。而很多的面向对象语言都支持两种继承:接口继承和实现继承。前者是只继承方法签名,后者继承实际的方法。继承的主要作用是将一些抽象的模块抽离出来,作为一个父类使用,这样便于实际编程中代码的可复用性和可维护性,也从一定程度上减少代码冗余,使得代码更加的简洁整齐。在 JavaScript 中接口继承是不可能实现的,因为函数没有签名。所以实现继承成了 JavaScr_js 类继承接口
Published on2023年9月11日var、let 和 const 的区别JavaScript前端面试首先我们知道 var、let 和 const 都是声明变量用的,但是它们三个除了这个共同点之外,其他部分都各不相同,下面我们来看下。varvar 关键词,是用来声明一个变量的,并可选地将其初始化为一个值。var num = 1;var str = 'hello world';var fn = () => {};// 也可以声明多个变量,中间用逗号隔开var a = 1, b = 2, c = 3;特点:它的作用域是它当前的执行上下文,本身是根据声明位置决定是全局变量还是局部变量。
Published on2023年9月11日JS 数组去重的十种方法JavaScript面试前端数组的去重方法,其实无论实在实际项目还是在面试中都会有用到的,下面我们来列举一下常见的几个:使用 for 循环和 includes使用 Set 和 Array.from()使用 for 循环和 indexOffor 循环嵌套 for 循环,结合 splice使用 sort 和 reduce 方法使用 filter 和 indexOf使用 forEach 循环和 Map使用 reduce 和 includes使用扩展运算符和 set如果是数组对象的数据格式,可以使用 forEach 和 _数组去重
Published on2023年9月11日来谈谈闭包JavaScript面试前端一个函数和其周围状态的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包。也就是说,闭包可以让你在一个内层函数中访问到外层函数的作用域。在 JavaScript 中,每当创建一个函数,闭包就会在函数创建的同时被创建出来。
Published on2023年9月11日原型和原型链JavaScript面试前端每个函数都会创建一个 prototype 属性,这个属性是一个对象,包含应该由特定引用类型的实例共享的属性和方法。实际上,这个对象就是通过调用构造函数创建的对象的原型。
Published on2023年9月11日手写数组的 push 方法JavaScript面试前端手写数组的 push 方法,那我们第一步想到的应该是数组本身的 push 方法,push方法将一个或者多个元素添加到数组的末尾,并返回该数组的新长度。