自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 解决js中无敌神兽---闭包

对于闭包的务必产生记住三句话:1 函数的里面返回函数,2 内部函数要用到外部函数的值(这也是为什么会有闭包产生)3 外部函数调用一次产生一个闭包我们先来实现一个简单的需求,实现计数器的功能:即函数每调用一次,就让数加1function add() { let value = 0 value++ console.log(value) } add()//1 add()//1 add()//1这个函数并没有现实我们的需求

2020-05-28 15:21:23 461

原创 flex布局中的align-items:stretch属性

align-items:stretchalign-items:stretch是一个默认值,永远保持在侧轴拉伸项目,怎么理解这句话呢?如果侧轴是垂直方向,那么在垂直方向如果项目没有设置高度,则会拉伸至弹性父级盒子的高度,如果侧轴为水平方向,如果项目没有设置宽度,那么就会拉伸其宽度至父级弹性盒子的宽度一致。这里用一个布局例子详细解释这个属性我们想实现类似于这个效果,基本的布局思路是,给一个白色的大盒子弹性布局,设置主轴方向为column,然后让其两端对其,然后再让两个盒子设置为弹性盒子,两边对齐

2020-08-06 20:16:15 15169 1

原创 防抖和节流的简单实现

防抖何为防抖:你尽管触发事件,我一定会在事件n秒后去执行事件,你不断触发了事件,那么我就以你的每次触发时间为最新,重新计时,之前的都不算简单实现原理思路:(这里以点击不断的点击事件为例子)用户每次点击按钮,都会开始重新计时,所以这里就需要一个定时器,每次用户点击,都要去清除定时器,这时候我们需要将定时器的id保存起来,用以清除定时器,这里就需要考虑这个定时器的id保存在哪里了,这个定时器的id应该被保存起来的,不能我们每一给触发事件,就重新赋值,这样就不行了,所以我们考虑用闭包来保存这个值,用户每次点

2020-07-30 21:24:27 695

原创 我的笔记(CSS记录)

内容对HTML新增的video和audio标签进行分析结构伪类nth-child和nth-of-type的二者的用法区别background-size的使用视频针对视频有两种方案没有兼容性的 将视频文件上传到第三方网站获取其分享代码放到自己的页面中即可优点:没有兼容性缺点:有广告植入使用H5新增的video方法<video src="视频路径"></video>优点:没有广告缺点:有兼容性,一般运用在手机端video标签的常用属性(音

2020-07-30 14:32:06 151

原创 css中的动画

transition—过渡动画可以过渡的属性:有过渡中间值,例如left,width(从200px==>400px中间有过渡值),可以过渡,有一些属性不可以:如solid==>dotted可以使用transition-prototype单独对某个属性声明过渡效果,可以使用transition-duration对这个单独的属性进行过渡效果的控制可以使用transitionendAPI绑定过渡结束事件,在动画结束之后对其操作对属性进行定制(过渡时间和过渡属性一一定制)设置按照步数来走

2020-06-23 15:51:00 149

原创 Git常见命令以及操作

Git常见指令作为一个刚加入到团队中去,负责其中一个分支的操作,如何拉去GitHub上的现有分支(先clone):如何需要我们自己创建一个分支,直接就新建一个分支,新键分支的操作如下新建的分支在push时候,会报错,因为远程没有这个分支,按照Git的提醒操作即可当俩个分支同时对一个文件进行修改的时候,会有冲突,解决办法如下在其它分支和master分支,都向前推进时,如何此时进行合并,遇到的冲突都让master让解决,这显然不合理,可利用rebase可以让分支的commit在最新一个master

2020-06-23 15:46:23 109

原创 Vuex图示

2020-06-15 10:31:24 215

原创 函数之执行上下文和作用域

全局执行上下文:在执行代码前将window设置为全局执行上下文对全局进行预处理将 var 定义的全局变量====》undefined,添加为window属性function声明的全局函数====>赋值(fun).添加为window方法this====>赋值(window)开始执行全局代码函数执行上下文:在调用函数,准备执行函数体之前,创建对应的函数执行上下文对象对局部数据进行预处理形参变量==>赋值(实参)==>添加为执行上下文的属性argueme

2020-06-10 08:55:47 326

原创 Vue框架基础知识(二)

Vue生命周期三大阶段初始化显示阶段(4个钩子)beforeCreate,created,beforeMount,mounted数据更新显示(2个钩子)beforeUpdate,updated死亡(2个钩子)beforedDestroy,destroyed常见的生命周期方法mounted(),发送ajax请求,启动定时器等异步任务beforeDestroy():做收尾工作,如清理定时器过渡和动画Enter 显示Leave 隐藏 /*显示和隐藏的过渡效果*/

2020-06-09 21:54:50 112

原创 Vue框架基础知识(一)

Vue的借鉴借助了angular模板和数据绑定借助了react的组件化和虚拟DOM的技术Vue的插件vue-clivue-resourcevue-routervue-lazyloadvue-scrollermint-uielement-uiMVVC的理解模板语法:插值表达式的里面是变量,可以用原生js写<p>{{username.toUpperCase()}}</p><img src="url">是html的语法,应该这样写 &lt

2020-06-09 16:33:43 394

原创 js基础知识的总结(不断更新)

数据类型基本类型:string,number,boolean,null,undefined, symbol对象类型:objectfunction f1(){}console.log(typeof f1)//functionconsole.log(typeof [])//object1. undefined和null的区别?undefined定义了,没有赋值null定义了,并且赋值为null2. 什么时候要赋值为null呢?初始赋值为null,表明将要赋值为null结束的时

2020-06-07 20:13:56 169 1

原创 内存,变量和数据之间的的三角恋

数据:数据就是存放在内存中的东西,本质上是01010…数据的特点:可传递,可运算内存:内存条通电后产生的可存储的数据空间 (临时的)内存的产生的死亡:内存条(电路板)----通电----产生内存空间----存储数据----处理数据----断电----内存空间和数据消失一块小内存的2个数据 内部存储的数据 地址值内存分裂栈:全局变量/局部变量堆:对象变量:可变换的量,由变量名和变量值组成每个变量都对应一小块内存,变量名用来查找对应的内存,变量值就是内存中保

2020-06-07 19:43:47 114

原创 牢记几句话搞定原型链和继承

前面也写过原型链的文章,但是发现从这个方面分析原型链更好理解,所以记录了下来,实例对象都有隐式原型(__proto__),函数对象都有显式原型(prototype)记住下面两句话句话再去看图对你理解原型链很有帮助:实例对象的隐式原型指向构造函数的显式原型函数的显示原型指向的对象默认为空Object实例对象(Object除外)如果看完图还是不明白,还是请你去看前面两句话,这里解释一下:函数的显示原型指向的对象默认为空Object实例对象(Object除外),为什么Object除外呢?如果按照我们上

2020-06-05 09:25:12 297

原创 对js中关键字class类的认识

class可以看做是构造函数的语法糖,class在功能上更加完善class中原型方法的写法 class Student{ show(){ console.log("哈哈") } }直接在大括号里面添加方法就是添加到原型里面,对比构造函数在原型中添加方法Student.prototype.show=function(){}更加方便在class中添加的原型方法,还有一个好处就是在遍历属性的时候,不会被遍历(利用for in循环遍历)到,class关键字给

2020-06-04 14:19:25 773

原创 js面向对象编程---基础知识点

对面向对象的一些知识点的笔记记1:函数服务于对象内部叫做方法记2:对象属性的基本操作 let user = { name: "小凡", "my age": 19//属性比较特殊 } console.log(user.name)//第一种方式 小凡 console.log(user["my age"])//第二种方式--不标准命名 19 for (const key in user) { console.log(user[k

2020-06-03 15:24:11 281

原创 对call(),apply(),bind()方法的总结

call()的作用:1 该变函数内部this的指向2 函数立即执行(也就是说仅仅是用call()改变了一下this的指向,函数该怎么执行还是怎么执行) const obj = { name: "小凡" } function f1(x) { console.log(this === obj)//true console.log(x) } f1.call(obj, 1)//函数还是传参调用3 call()同样可以用来

2020-06-03 15:14:27 197

原创 原型的一些作用和对继承的理解(杂记)

原型的理解:通俗一点可以将原型比作对象的爸爸,每个函数(更准确一点说构造函数)在创建的时候都有一个原型prototype,每个对象都拥有__proto__原型(当然后面我们也可以人为创建没有__proto__的对象),这样看来函数就会拥有这两个属性(既当爹有当妈),因为函数也是对象,每个对象又都是通过构造函数实例化出来的,所以二者就有了关系,对象的实例化写法let arr=new Array(1,2,3,4) 和let object=new Object()和let bool=new Boolean()和

2020-06-02 10:25:01 170

原创 js中数组以及常用方法笔记

数组相关的一些介绍:因为我们最常用的是字面量的方式创建数组,别忘了还有数组的构造函数创建方式:a、var arr1 = new Array();//创建空数组b、var arr2 = new Array(10);//创建一个长度为10的数组c、var arr3 = new Array(5,4,3,2,1);//创建数组并初始化为了避免arr2的情况,所以可以var arr2 = Array.of(10)//[10]表示只有一个项为10检测数组1 检测数组是不是对象可以利用console.l

2020-06-01 09:36:34 119

原创 js中遍历数组方法的总结(结合实际)

数组的很多方法都可以实现对数组的操作,但是在使用的时候,有时候能够用对方法,往往能够达到事半功倍的效果方法1—forEach方法-----没有返回值,对原数组没有影响假设这样的场景:我们在实现购物车商品结算的时候,默认加入购物车的商品是勾选的,全选按钮就会勾上,当我们取消全选按钮时,就应该遍历存商品的数组,让所用按钮的状态和全选按钮一致:具体代码如下handleAllChecked() { let {cart, allChecked} = this.data allCh

2020-05-27 10:23:10 205

原创 对同步和异步以及宏认为和微任务的理解

废话不多说:直接上图(js的执行机制) js是单线程的,就是不管什么时候,只能做一件事,如果这件事用时太长,导致的结果就是,我们在这个期间什么事情都干不了,所以在浏览器内部会对我们的代码进行辨别,如果是同步代码,(好了啥也不管,奥利给,干),放入主线程开始执行,如果是异步的代码,就需要将异步的回调函数放入Event Table注册,等待需要执行的条件满足,就会放入Event Queue,等待主线程执行结束,再来Event Queue中找任务,有的话就拿到主线程中执行,这时候可能有小伙伴就要问了,浏览器怎么

2020-05-20 20:33:40 432

空空如也

空空如也

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

TA关注的人

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