JavaScript
针对JavaScript的总结
我的名字豌豆
专注前端开发,懂一些Go啦~
展开
-
使用Jest测试js代码
为什么使用Jest? 1. Jest 可以利用其特有的快照测试功能,通过比对 UI 代码生成的快照文件,实现对 React 等常见框架的自动测试。此外, Jest 的测试用例是并行执行的,而且只执行发生改变的文件所对应的测试,提升了测试速度 2.安装配置简单,非常容易上手,几乎是零配置的,通过npm 命令安装就可以直接运行了 3. Jest 内置了测试覆盖率工具istanbul,可以通过命令开启或者在 package.json 文件进行更详细的配置。运行 istanbul 除了会再终端展示测试覆盖率情原创 2021-02-18 15:21:03 · 2582 阅读 · 0 评论 -
电商后台开发之商品规格组合算法
前言 最近接了私活,关于器械商城的项目,最后收尾阶段,发现发布商品还是存在着问题,对于多个相同/不同的商品规格输出成商品时,需要依据规格名对规格值进行排列组合,保证所有规格值都可以进行选择。核心代码部分数据结构 formState: { goods: { goodsSn: '', // 商品编号 ...xxx }, // 商品规格 specifications: [ {原创 2022-04-05 18:07:38 · 1196 阅读 · 0 评论 -
手写Promise中all、race、any方法
all方法// all: 传入的所有Promise最终都转化为fulfilled态时,则会执行resolve回调,并将返回值是的所有的Promise的resolve的回调的value的数组。// 其中一个任何Promise为reject状态时,则返回的Promise的状态更改为rejected。function all(arr) { //返回一个promise return new Promise((resolve, reject) => { let length原创 2021-11-24 14:42:23 · 721 阅读 · 0 评论 -
js实现数组与对象数组的去重
数组实现去重的方法filter + indexOf进行去重function deDeplicated(arr) { return arr.filter((item, index) => { console.log(index, arr.indexOf(item), index === arr.indexOf(item)) return index === arr.indexOf(item); })}双重for循环进行去重function di原创 2021-11-21 23:30:16 · 673 阅读 · 1 评论 -
前端面试之new操作符具体都干了什么?
new操作符具体都干了什么?(1) 首先创建了一个空对象。(2) 设置原型,将对象的原型设置为函数的prototype对象。(3) 让函数的this指向这个对象,执行构造函数中的代码(4) 判断函数的返回值类型,如果是值类型,则返回创建的对象,如果是引用类型,则返回这个引用类型的对象。实现一下?function objectFactory(){ let newObject = null, construct = Array.prototype.shift.call(angum原创 2021-10-17 20:11:19 · 762 阅读 · 0 评论 -
手写instanceof
instanceof的作用 instanceof的作用是判断一个构造函数的prototype属性所指向的对象是否在另一个被检测对象的原型链上。手写instanceof 代码部分: function myInstanceof(left,right){ // Object.getPrototypeOf(left) 返回left的原型 let proto = Object.getPrototypeOf(left) prototype = right.prototype while(原创 2021-06-06 21:29:16 · 133 阅读 · 0 评论 -
前端面试之手写call、apply、bind
Call的简易模拟实现 Function.prototype.myCall = function (context) { context = context || window //将当前被调用的方法定义在context.fn上(为了能以对象调用的形式绑定this) context.fn = this //获取实参,将伪数组转换,从数组第二个开始截取 let args = [...arguments].slice(1) //以对象调用的形式调用func,此时的this指原创 2021-04-01 15:14:59 · 101 阅读 · 0 评论 -
js面试题之if (a == 1 && a == 2 & a == 3)判断a的条件值
题目: if (a == 1 && a == 2 & a == 3) { console.log(1); } 在什么情况下会输出1?分析 在判断双等于号的时会设计到类型转换问题,如果等号两边的数值类型不一样可以尝试将他们转化成一个类型。对象类型在使用双等号时,会涉及到隐式转换,在执行a==1时首先会调用Valueof方法进行判断,不行则继续调用toString(),然后再把toString返回的字符串转化为数字类型继续和a作比较。使用 == 号时V原创 2021-03-22 18:24:54 · 1748 阅读 · 0 评论 -
浅谈函数之防抖与节流
防抖与节流 通常呢我们使用防抖与节流都是为了限制函数的频繁执行,使得性能大大降低,使得用户可能存在出现卡顿等等。区别防抖:只在设定的时间内执行一次代码节流:在设定的时间内如果没有触发过该事件,才会触发事件函数节流 函数节流的场景往往在onscroll,resize,mousemove等等函数中应用,使得执行触发该事件所对应的代码时只在间隔设定的事件内执行,下面我们来上代码。 节流函数:/* 通过节流函数我们可以极大优化自己的性能,节约自己的性能 */ function t原创 2020-08-25 23:39:13 · 1583 阅读 · 0 评论 -
数组常见之去重、排序与反转
面试题中对于操作数组实现某种形式的改变层出不穷,在这里我们简单介绍三种常见数组面试题,日后随着不断的学习还会更新,敬请关注。数组去重//原数组 var arr = [8,11,2,'a',5,true,true,8,2,4,0,8,'a','b'] //新数组 var t = [] //初始化数组中的第一个数据 t[0] = arr[0] //原数组中的每个数据向新数组中添加元素之前都会去判断新数组中有没有原创 2020-08-23 16:10:18 · 1606 阅读 · 0 评论 -
call、apply、bind函数详解
我们都知道call,apply,bind函数都是为了改变this的指向,那么对于三种函数有什么相同点有什么不太点或者有什么应用呢?下面我们来进行介绍call与apply函数 在javascript种,call,apply的出现是为了改变函数体内部的指向,下面我们来看一个栗子,并从中进行分析。 var a = "我是window的小a"; var obj = { a:"我是obj的小a", foo:function (...arg)原创 2020-08-09 15:17:20 · 2307 阅读 · 0 评论 -
走进作用域与闭包
一:什么是闭包? 在阮一峰老师的文章中对于闭包的理解是:闭包就是能够读取其他函数内部变量的函数。可能上面这句话大家还是没有明白,那么对于通俗点的理解呢就是:当一个函数用到了作用域外的变量,那么这个变量与这个函数之间的环境叫做闭包如何产生闭包 当一个嵌套的内部函数引用了嵌套的外部函数的变量时,就产生了闭包。产生闭包的条件函数嵌套内部函数引用了外部函数的数据 当我们学习完闭包后,你会发现闭包无处不在。闭包是基于词法作用域书写代码时所产生的自然结果,你甚至不需要为了利用它们而有意识地创建闭包原创 2020-08-05 21:32:10 · 1632 阅读 · 0 评论