js
折海棠赠晩宁.
这个作者很懒,什么都没留下…
展开
-
大厂前端开发笔试题
答题说明做题时间: 30分钟,能做多少做多少加分项:使用TypeScript/ES6编写函数有明确的输入输出类型定义明确合理边界情况处理完善注释清晰采用声明式编程一、函数限频已知一个分页加载的卡券列表页,只要页面滚动到底部就向服务器发起请求,加载下一页卡券数据。由于滚动事件非常频繁,过多的请求导致服务器压力很大。请编写一个函数,减少上述场景发起请求的频率/** * @param {Function} handler 逻辑函数 * @param {number} gap 间隔时原创 2022-03-17 10:31:33 · 1186 阅读 · 0 评论 -
web前端面试题必备
1、vue数据双向绑定原理vue.js 是采用数据劫持结合发布者-订阅者的模式的方法,通过Object.defineProperty()来劫持各个属性的Getter、setter,在数据变动时发送消息给订阅者。它实现的整个流程是先为每个vue属性用Object.defineProperty()实现数据劫持,为每个属性分配一个订阅者集合的管理数组dep;然后在编译的时候在该属性的数组dep中添加订阅者,v-model就会添加一个订阅者,接着用input举例,为input添加监听事件,修改值就会为这个属性赋值原创 2020-10-12 09:21:52 · 842 阅读 · 2 评论 -
vue双向数据绑定原理(面试必备)
原理vue.js是采用数据劫持结合发布者-订阅者的模式的方法,通过Object.defineProperty()来劫持各个属性的Getter、setter,在数据变动时发送消息给订阅者。实现的整个流程首先为每个vue属性用Object.defineProperty()实现数据劫持,为每个属性分配一个订阅者集合的管理数组dep;然后在编译的时候在该属性的数组dep中添加订阅者,v-model就会添加一个订阅者,接着为input添加监听事件,修改值就会为该属性赋值,触发该属性的set方法,在 set方法内原创 2020-10-05 10:05:07 · 369 阅读 · 0 评论 -
在微信开发程序中点击执行“构建npm“报错
一、官网给的文档写的不够充分,需要你充分理解npm的使用方法,才能明白的;二、开始步骤: 1、第一步:npm init 2、第二步:npm install --production 3、第三步: npm i vant-weapp -S --production三、还要注意一点就是微信开发者工具要更新到最新版本,不然点击工具没有构建npm这一栏,原文:https://blog.csdn.net/zfeng816/article/details/85095885...转载 2020-09-25 21:32:57 · 320 阅读 · 0 评论 -
vue中的事件修饰符
常用的修饰符@事件.stop 阻止事件冒泡@事件.prevent 阻止事件默认行为@事件.capture 触发事件捕获@事件.self 当事件在该元素本身 触发回调@once 只执行一次@事件.passive 告诉浏览器你不想阻止事件的默认行为.使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。因此,用v-on:click.prevent.self会阻止所有的点击,而 v-on:click.self.prevent 只会阻止对元素自身的点击。v-model的修饰符<1>原创 2020-09-20 21:04:18 · 131 阅读 · 0 评论 -
js的数据类型 存储
js数据类型JavaScript一共有8种数据类型:7种基本数据类型: Undefined、Null、Boolean、Number、String、Symbol(es6新增,表示独一无二的值) 和 BigInt(es10新增);1种引用数据类型: Object(Object本质上是由一组无序的名值对组成的)。里面包含 function、Array、Date等。JavaScript不支持任何创建自定义类型的机制,而所有值最终都将是上述 8 种数据类型之一。如何存储基本数据类型:直接存储在栈(sta原创 2020-09-20 20:52:21 · 188 阅读 · 0 评论 -
vue中的11个生命周期
BeforeCreate(创建前)该函数执行在组件创建、数据观测 (data observer) 和 event/watcher 事件配置之前,实例初始化之后被调用。在该阶段组件未创建,不能访问数据,组件中的 data,ref 均为 undefined。Created(创建后)在组件创建完成后立即调用在这一步 实例已经完成了数据观测 属性和方法的运算 watch、event事件回调但是还没有渲染成html模板 组件中的data已经存在 可以进行操作了 但是el仍然是undefiend 因为挂载原创 2020-09-16 08:25:16 · 2910 阅读 · 0 评论 -
vue中axios封装和api接口管理
vue中Axios的封装和API接口的管理我们所要的说的axios的封装和api接口的统一管理,其实主要目的就是在帮助我们简化代码和利于后期的更新维护。一、axios的封装在vue项目中,和后台交互获取数据这块,我们通常使用的是axios库,它是基于promise的http库,可运行在浏览器端和node.js中。1. 安装npm install axios; // 安装axios2. 目录创建一般我会在项目的src目录中,新建一个network文件夹,作为我们的网络请求模块,然后在里面新建一原创 2020-09-14 19:19:09 · 205 阅读 · 0 评论 -
事件监听
1、事件监听的定义关于事件监听,W3C规范中定义了3个事件阶段,依次是捕获阶段、目标阶段、冒泡阶段。起初Netscape制定了JavaScript的一套事件驱动机制(即事件捕获)。随即IE也推出了自己的一套事件驱动机制(即事件冒泡)。最后W3C规范了两种事件机制,分为捕获阶段、目标阶段、冒泡阶段。IE8以前IE一直坚持自己的事件机制(前端人员一直头痛的兼容性问题),IE9以后IE也支持了W3C规范。在Javascript中,浏览器一般分为两大类:① 基于IE内核的浏览器(版本号小于9的IE浏览器)原创 2020-09-14 08:43:35 · 383 阅读 · 0 评论 -
JS的23种设计模式
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类:并发型模式和线程池模式。用一个图片来整体描述一下:二、设计模式的六大原则总原则:开闭原则(Open Close原创 2020-09-14 08:31:04 · 715 阅读 · 0 评论 -
内存泄漏与垃圾回收机制
什么是内存泄漏?程序的运行需要内存,只要程序提出要求,操作系统或者运行是就必须供给内存。对于持续运行的服务进程,必须及时释放内存,否则,内存占用越来越高,轻则影响系统性能,重则导致进程崩溃。不再用到的内存,没有及时释放,就叫做内存泄漏。有些语言(比如c语言)必须手动释放内存,程序员负责内存管理。这很麻烦,所以大多数语言提供自动内存管理,减轻程序员的负担,这被称为"垃圾回收机制"。标题常见的内存泄漏的原因全局变量引起的内存泄漏 function leaks(){ leak = 'xxx原创 2020-09-13 21:44:25 · 156 阅读 · 0 评论 -
5种方式实现数组扁平化
数组扁平化概念数组扁平化是指将一个多维数组变为一维数组[1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5]实现方法:1. reduce遍历数组每一项,若值为数组则递归遍历,否则concat。function flatten(arr) { return arr.reduce((result, item)=> { return result.concat(Array.isArray(item) ? flatten(i原创 2020-09-10 21:56:35 · 137 阅读 · 0 评论 -
JS最简单、实用的两种数据排序的方法
1.sort() 方法sort() 方法以字母顺序对数组进行排序:var fruits = ["Banana", "Orange", "Apple", "Mango"];fruits.sort(); // 对 fruits 中的元素进行排序2.比值函数比较函数的目的是定义另一种排序顺序。比较函数应该返回一个负,零或正值,这取决于参数语法:function(a, b){return a-b}实例1:查找最高(或最低)的数组值JavaScript 不提供查找数组中最原创 2020-09-09 19:52:44 · 554 阅读 · 0 评论 -
最常用、最简单的JS数组去重的两种方法
1.遍历数组法(indexOf方法)它是最简单的数组去重方法实现思路:新建一个数组,遍历去要重的数组,当值不在新数组的时候(indexOf为-1)就加入该新数组中;var arr=[2,8,5,0,5,2,6,7,2];function e(arr){ var newArr=[]; //临时数组 for (var i = 0; i < arr.length; i++) { if(newArr.indexOf(arr[i])==-1){ newArr.push(ar原创 2020-09-09 19:39:28 · 229 阅读 · 0 评论 -
ES6常用的数组方法总结
1、Array.from()用于类似数组的对象(即有length属性的对象)和可遍历对象转为真正的数组。let json ={ '0':'11', '1':'22', '2':'33', length:3 } let arr = Array.from(json); console.log(arr); // ["11", "22", "33"] 2、Array.of()将一组值转变为数组,参数不分类型,只分数量,数量为0返回空数组。let arr1原创 2020-09-08 21:25:54 · 177 阅读 · 0 评论 -
ES5常用的数组方法总结
ECMAScript 5中对Array中新增了9个方法:5个迭代方法(循环操作数组中的各个项):forEach(),map(),filter(),every()和some()2个归并方法(迭代数组所有项,最终返回一个值):reduce()和reduceRight()2个索引方法:indexOf() 和 lastIndexOf();一、forEach()方法跟之前的for()循环一样,只是forEach更灵活遍历当前数组,参数为一个回调函数,回调有三个值:1.e当前元素,2. index当原创 2020-09-08 20:17:29 · 758 阅读 · 0 评论 -
generator总结(异步编程、yield、next()、await 、async)
提示:Generator 是一个迭代器生成函数,其返回值是一个迭代器(Iterator),可用于异步调用。迭代器协议: 定义了一种标准的方式来产生一个有限或无限序列的值Generator 函数的定义语法上,可以把理解成,Generator 函数是一个状态机,封装了多个内部状态。形式上,Generator 函数是一个普通函数。它不同于普通函数,是可以暂停执行的,所以函数名之前要加星号,以示区别。整个Generator函数就是一个封装的异步任务,或者说是异步任务的容器,异步操作需要暂停的地方,都用y原创 2020-09-06 16:17:02 · 213 阅读 · 0 评论 -
async/await(优势在于处理then链)
词法定义asyncasync 是“异步”的简写, async 用于申明一个异步的 functionawait有两个作用,一是作为求值关键字,二是将异步操作变成同步操作;如果方法中使用了await,那么在方法前面必须加上asyncawaitawait 可以认为是 async wait 的简写,await 用于等待一个异步方法执行完成。async/await其实是Promise的语法糖,它能实现的效果都能用then链来实现,它是为优化then链而开发出来的。从字面上来看,async是“原创 2020-09-06 16:01:41 · 1189 阅读 · 0 评论