自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 JS 的DOM 操作(Node节点获取及增删查改)

获取(太多了,有document.getElementById/ClassName/Name/TagName 等,或者 querySelector)// example// get Nodevar element = document.querySelector('#test');// 追加element.appendChild(Node);// 删除element.removeChild(Node);// 查找element.nextSibl...

2021-05-27 21:48:27 410

原创 说一下vue生命周期钩子函数有哪些,分别什么时候触发

vue生命周期即为一个组件从出生到死亡的一个完整周期,主要包括以下4个阶段:创建,挂载,更新,销毁创建前:beforeCreate, 创建后:created挂载前:beforeMount, 挂载后:mounted更新前:beforeUpdate, 更新后:updated销毁前:beforeDestroy, 销毁后:destroyed我平时用的比较多的钩了是created和mounted,created用于获取后台数据,mounted用于dom挂载完后做一...

2021-05-26 21:54:14 2212

原创 渐进增强和优雅降级之间的不同

渐进增强progressiveenhancement:针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。优雅降级gracefuldegradation:一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时...

2021-05-26 21:48:30 122

原创 双向绑定的原理?数据劫持?

mvvm 双向绑定,采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的 setter、getter,在数据变动时发布消息给订阅者,触发相应的监听回调。几个要点:1、实现一个数据监听器 Observer,能够对数据对象的所有属性进行监听,如有变动可拿到最新值并通知订阅者2、实现一个指令解析器 Compile,对每个元素节点的指令进行扫描和解析,根据指令模板替换数据,以及绑定相应的更新函数3、实现一个 Watcher,作为连接 Observe..

2021-05-26 21:43:20 111

原创 函数柯里化(卡瑞化、加里化)?

概念:把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。容易理解的概念:Currying概念其实很简单,只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数(主要是利用闭包实现的)。特点:①接收单一参数,将更多的参数通过回调函数来搞定;②返回一个新函数,用于处理所有的想要传入的参数;③需要利用call/apply与arguments对象收集参数;④返回的这个函数正是用来处理收...

2021-05-26 07:44:34 183

原创 手写实现 AJAX

/1. 简单流程// 实例化let xhr = new XMLHttpRequest()// 初始化xhr.open(method, url, async)// 发送请求xhr.send(data)// 设置状态变化回调处理请求结果xhr.onreadystatechange = () => {if (xhr.readyStatus === 4 &&xhr.status === 200) {console.log(xhr.resp...

2021-05-25 20:38:23 159

原创 this指向问题

this指向问题this是JavaScript语言的一个关键字,它是函数运行时,在函数体内部自动生成一个对象,只能在函数体内部使用。函数的不同使用场合,this有不同的值。总的来说this就是函数运行时所在的环境对象。情况一:纯粹的函数调用:这是函数的最通常的用法,属于全局调用,因此this就代表全局对象var x = 1;function test(){console.log(this.x);}test(); // 1情况二:作为对象方法...

2021-05-24 23:53:44 123

原创 call、apply、bind封装,介绍三者区别

call、apply、bind封装以及三者区别相同之处:改变函数体内 this 的指向。不同之处:call、apply的区别:接受参数的方式不一样。bind:不立即执行。而apply、call 立即执行。call方法第一个参数是要绑定给 this 的值,后面传入的是一个参数列表。当第一个参数为 null、undefined的时候,默认指向window。apply接收两个参数,第一个参数是要绑定给 this 的值,第二个参数是一个参数数组。当第一个参数为 null、undef..

2021-05-23 21:49:28 351

原创 VUE中.sync和v-model的区别

.sync和v-model的区别v-model 是 .sync的一种体现。.sync 比较灵活;v-model较单一v-model本质v-model本质上就是一个语法糖。相当于为父组件绑定了一个props与更新事件,当子组件数据更新时,实质上是调用了input事件来改变父组件的值: <!--父组件--> <template> <!--v-model 是语法糖--> <Child v-model=

2021-05-19 21:25:08 429 1

原创 vue封装api

import axios from 'axios'// 创建axios对象let service = axios.create({ baseURL: 'http://127.0.0.1:3001', // 请求接口的域名 timeout: 9000 // 请求的超时})// 添加请求拦截器,service.interceptors.request.use( request => { // 设置请求的头信息 request.headers = { .

2021-05-19 00:03:46 141

原创 数组常用方法

1、获取数组字符串toString();将数组转换成字符串语法格式:数组名.toString();数组元素间用逗号相隔,拼接成一个字符串join(分隔符);是将数组转换成字符串,元素之间用指定的分隔符隔开,注意分隔符是字符串形式语法:数组名.join(分隔符);2、连接数组将两个或更多个数组拼接为一个大的数组语法:数组名.concat(需要拼接数组列表);数组之间用逗号隔开注意:该方法不会改变原有数组,而是会拼接后产生一个新的数组3、获取子数组(数组的切割)就是用原有数组的部分元素组

2021-05-18 00:27:35 1408

原创 开发微信小程序初

注册如果你还没有微信公众平台的账号,请先进入微信公众平台首页,点击 “立即注册” 按钮进行注册。创建配置项目页头页尾配置pages 属性用来设置页面路径,它是一个数组,每一项都是字符串来指定小程序由哪些页面组成。数组的第一项代表小程序的初始页面。小程序中新增或减少页面,都需要对 pages 数组进行修改。window 属性用于设置小程序的状态栏、导航条、标题、窗口背景色。{ "pages":[ "pages/index/index", ...

2021-05-14 00:23:59 72

原创 JS闭包的理解

JS闭包的理解闭包的定义:如果在一个内部函数里,对在外部作用域(但不是全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)。 内部函数访问外部变量 函数嵌套函数 参数和变量不会被垃圾回收机制回收function a(){var n=0;function b(){n++;console.log(n)}return b;}var c=a();c();好处①保护函数内的变量安全 ,实现封装,防止变量流入其他环境发生命名冲突②在内存中维持一个变.

2021-05-13 00:32:07 55

原创 防抖节流原理

防抖或是节流:限制函数的执行次数防抖:通过settimeout的方式,在一定的时间间隔内,将多次触发变成一次触发 节流:减少一段时间的触发频率防抖实现: 每一次都要清空定时器,重新设置上计时器值,使得计时器每一次都重新开始,直到最后满足条件并且等待delay时间后,才开始执行handler函数。适用场景:按钮提交场景:防止多次提交按钮,只执行最后提交的一次 搜索框联想场景:防止联想发送请求,只发送最后一次输入function debunce(handler...

2021-05-11 23:17:07 315

原创 柯里化概念

柯里化概念把接收多个参数的函数变换成接收一个单一参数的函数(单一参数为多个参数中的第一个)函数柯里化思想:一个JS预处理的思想,降低通用性,提高适用性。特点:参数复用 需要输入多个参数,最终只需输入一个,其余通过arguments来获取提前返回 避免重复去判断某一条件是否符合,不符合则return 不再继续执行下面的操作延迟执行 避免重复的去执行程序,等真正需要结果的时候再执行function fn(){ console.log(this)}...

2021-05-11 08:05:27 96

原创 uniapp介绍

uni-app 介绍uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架。开发者通过编写 Vue.js 代码,uni-app 将其编译到iOS、Android、微信小程序等多个平台,保证其正确运行并达到优秀体验。目录结构┌─components uni-app组件目录│ └─comp-a.vue 可复用的a组件├─hybrid 存放本地网页的目录,详见├─platforms 存放各...

2021-05-07 23:17:46 1494

原创 赋值、深拷贝与浅拷贝解析

赋值赋值操作就是简单的引用,指向于同一个对象,比如说a=[ 1,2,3 ] ; b = a,返回的结果就是b = [1,2,3 ]堆和栈堆和栈都是内存中划分出来用来存储的区域。栈(stack)为自动分配的内存空间,它由系统自动释放;堆(heap)则是动态分配的内存,大小不定也不会自动释放。数据类型基本数据类型 Number String Boolean null undefind基本数据类型存放在堆中 基本数据类型值不可变 基本类型的比较是值的比较引用数据类型 Obj..

2021-05-06 22:53:03 132

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除