自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 js中对象属性、面向对象、面向过程、类、继承、以及原型原型链

对象字面量对象字面量是对象定义的简写形式,目的是为了简化包含大量属性的对象的创建。也可以使用字符串、数字、bool类型来定义。但要注意此类情况(后值覆盖前值):访问/设置方式configurable(可配置)表示属性是否可以通过删除并重新定义,是否可以修改它的特性,以及是否可以把它改为访问器属性。默认情况下,所有直接定义在对象上的属性的这个特性都是 。enumerable表示属性是否可以通过循环返回。默认情况下,所有直接定义在对象上的属性的这个特性都是。writable表示属

2022-08-08 10:45:16 312 1

原创 数组中遍历方法整理

由于key不能重复,所以,在Set中,没有重复的key。find:根据条件查找数组内的单个项,根据条件查找项,只要返回true那就证明找到了,如果为false的话,那就继续遍历查找。方法接收一个对象作为参数,返回包含该对象所有可枚举的实例属性名称的字符串数组。将多维数组扁平化,并返回一个新数组。遍历数组,针对每一个项返回一个新值,将新值放进新数组里,最后将新数组返回。创建一个新数组,根据条件将搜索匹配的项放入至新数组内,并将此数组返回。接收一个对象,返回键/值对的数组。验证数组内每一个项是否匹配。.....

2022-08-08 08:09:29 645

原创 数组的常用方法

let arr = [ 1 , 2 , 3 , 4 , 5 , 6 ] let brr = arr . pop() console . log(brr) //打印结果[1,2,3,4,5] //pop是将数组中的最后一个元素删除flat( ):用于数组扁平,数组去除未定义。// [1, 2, Array(2), 6],不传参默认为1 console . log(ary . flat(2));......

2022-08-05 19:48:43 465

原创 小程序的跳转加生命周期

小程序的跳转为navigator,在navigator中url为要跳转内容的路径路由后不能添加任何后缀,因为小程序每个文件夹下的四个页面缺少一个就不能创建页面,在跳转标签中的open-type定义路由的跳转方式方式有navigate默认值保留当前页面,跳转到应用内的某个页面。但是不能跳到tabbar页面。使用wx.navigateBack可以返回到原页面。小程序中页面栈最多十层redirect关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到tabbar页面。......

2022-08-02 16:22:31 401

原创 小程序的添加删除

在删除按钮中定义一个bindtap事件例如bindtap=“del”,并且定义一个下标或者id因为要将想要删除的删除所以需要下标和id例如data-i=“index”(data-id=“{{item.id}}”)在page中进行接收删除事件名例del将del事件名的事件通过e来确定所删除的事件是否成功触发,并将id和下标引进del中再进行点击是否能获取想要的下标或id再将想要的id和下标命名例如letid=e.currentTarget.dataset.id。......

2022-08-02 16:18:49 384

原创 小程序的(页面懒加载、下拉刷新、上拉加载更多以及页码结合)

在页面中可以使用navigator来进行跳转navigator标签中可以写内容也可以进行循环,在生命周期函数–监听页面加载(onLoadfunction(options){})中options存放的一般为页面传过来的id或者item值并且根据请求接口的方法在生命周期函数–监听页面加载中写入wx.request({url"详情页的接口数据"接收过来的数据通过success(res)=>{}函数来进行渲染进data中的对象中})如果接收过来的对象中有div标签种类的就使用小程序渲染富文本标签中进行接收。...

2022-08-02 16:16:24 875

原创 小程序的框架

在父组件中定义一个自定义事件定义自定义事件用bind自定义事件名="接收的数据函数"在子组件的methods中的点击事件(前提是得在子组件的wxml点击事件的标签中加上data-传过来的数组=“{{item}}”才可获得数据)中通过this.triggerEvent(‘自定义事件名’,‘要传递的数据’,事件配置项(事件冒泡,事件捕获,穿越组件边界))来向父组件传值。子传父还可以通过给子组件一个类名然后通过this.selectComponet(‘.类名’)获取子组件的数据和方法。...

2022-08-02 16:13:46 118

原创 小程序的组件和插槽

分为同步存储和异步存储。

2022-08-02 16:12:31 317

原创 vue的双向数据绑定原理以及步骤

vue.js是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调来渲染视图。

2022-08-02 16:08:13 182

原创 路由跳转方式 路由配置 嵌套和动态区别

使用位置写在在标签里面以v-开头使用场景需要对普通DOM元素进行操作,这时候就会用到自定义指令比如我们可以使用自定义指令让一个元素进入页面就获得焦点,拖拽//注册一个全局自定义指令`v-focus`Vue.directive("focus",{//当被绑定的元素插入到DOM中时……inserted//聚焦元素el.focus();},});一个指令定义对象可以提供如下几个钩子函数(均为可选)bind指令第一次绑定到元素时调用。...

2022-08-02 16:04:03 181

原创 js的单线程、同步和异步以及异步编程

所谓单线程是指一次只能完成一个任务。如果有多个任务,就必须排队等候,只有等前面得一个任务完成,才能继续后面得一个任务。单线程只要期中有一个任务耗时长,后面得任务都必须排队等着。为了解决这个问题,js将任务得执行模式分为两种分别是 同步和异步先弄清楚一件事情:编程中得同步异步和现实中得同步异步正好相反。同步:连续不间断地执行多个任务,会阻塞主线程。比如console.log()、alert()异步:不连续地执行多个任务,不会阻塞主线程比如:setTimeout()、网络请求、读取本地文件等三、异步编程解决方

2022-07-10 19:06:25 161

原创 面向对象以及类与继承

1、面向过程vs面向对象问题:如果把大象装进冰箱,需要几步?面向过程:(1)打开冰箱门; (2)把大象装进去(3)关上冰箱门面向对象就是分析出解决问题所需要的步骤,然后用函数把这些步骤———实现,使用的时候依次调用就可以了。所以面向过程其实描述的是一个个“动作”面向对象:(1)大象(2)冰箱面向对象跟面向过程不同,面向对象则是把构成问题的事务按照一定规划分为多个独立对象,然后通过调用对象的方法来解决这个问题。所以,面向对象其实描述的是一个个“物体”2、什么是面向对象编程面向对象是一种符合人类思维习惯的编程思

2022-07-10 19:04:39 582

原创 递归函数、深拷贝和浅拷贝

递归函数就是一个函数直接或间接的调用自身的一种方法。如果一个函数在它的函数内部调用自己,这个函数就是递归函数。1、可以把一个问题转化为一个新的问题、而这个新的问题的解决方法仍与原问题的解决方法是相同的,只是处理的对象有所不同,并且这些被处理的对象之间是有规律的,这种规律可以通过一些递归的表达式表示出来2、递归函数必须有一个明确的结束递归的条件,否则进行死循环。计算1加到n的和(n>=1)1、首先去找临界值,即无需计算,就能够得到的值。2、然后找这一次和上一次的关系,找到递归表达式。3、return这个表达式

2022-07-10 19:03:06 255

原创 Array、箭头函数和对象的扩展

数组的遍历伪数组Array.from()如何判断是否是数组?函数参数与解构赋值结合参数作用域作用域链:当在JS中使用一个变量的时候,首先JS会尝试在当前作用域下去寻找该变量,如果没有找到,再到它上一层作用域寻找。以此类推直到找到该变量为止,如果最后也没找到,直接报错!3.扩展运算符:把数组或者类数组展开用逗号隔开的值,应用场景如下:复制数组数组合并剩余参数:把逗号隔开的值组合成一个数组,应用场景如下:不定参数 arguments解构赋值二、箭头函数定义函数的几种方

2022-07-10 19:01:42 154

原创 es6的作用域以及let和const

全局作用域变量在函数或代码块外定义局部作用域变量在函数内部定义的块级作用域动态作用域JS采用静态作用域:变量的作用域是在定义时决定的而不是执行时决定的。动态作用域:只能在执行阶段才能决定变量的作用域。全局作用域变量在函数或代码块外定义局部作用域变量在函数内部定义的块级作用域动态作用域JS采用静态作用域:变量的作用域是在定义时决定的而不是执行时决定的。动态作用域:只能在执行阶段才能决定变量的作用域。let 用来替代 var 的因为var 有两个不足:1、var会出现变量提升现象2、var没有块级作用域使用le

2022-07-10 18:55:03 136

原创 Git分支管理和标签管理

如果在两个不同的分支中,对同一个文件进行了不同的修改,Git 就没法很干净的合并它们。此时,我们需要手动打开这些冲突的文件手动解决冲突,解决冲突后重新提交。下面我们先模拟一个冲突,操作如下:准备新的 dev 分支并修改提交修改 REAdME.md,添加一行文本内容“我是dev分支”。然后在 dev 分支上提交:切换到 master 分支并修改提交也修改 REAdME.md,添加一行文本内容“我是master分支”。然后在 master 分支上提交:然后合并 dev 分支这时你会发现 REA

2022-07-10 18:53:02 363

原创 Git创建分支

为什么需要分支比如我们开发完了一个 app 上线了,接下来就是迭代功能开发,如果上线的 app 突然出现了一个严重的 bug,这时就要你放下手头新功能的开发,先去解决这个 bug ,然后再发布一个新版本。如果你直接在新开发功能上进行修复发布的话,这肯定是不行的。因为发布的前提需要把新功能完善好,时间上是不允许的。如果删掉新功能的代码或者备份都不现实,如果代码不多还好说,如果代码多肯定不合适。但如果你使用 Git 分支就能很好的解决这个问题。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2022-07-10 18:51:45 65189 2

原创 Git创建仓库的基本指令

创建仓库提交与修改日志远程操作

2022-07-10 18:50:17 452

原创 keep-alive

keep-alive 是 vue 内置的⼀个组件,⽽这个组件的作⽤就是能够缓存不活动的组件,我们能够知道,⼀般情况下,组件进⾏切换的时候,默认会进⾏销毁,如果有需求,某个组件切换后不进⾏销毁,⽽是保存之前的状态,⽐如说刚刚填好的表单数据。那么就可以利⽤ keep-alive 来实现被缓存的组件 切换的时候不会触发创建和销毁的钩子函数 而是会触发跟 keep-alive 相关的 activated(激活) deactivated(停用)这两个钩子函数keep-alive 标签 有 include 属性

2022-07-08 15:22:49 92

原创 ts的基本知识

1.什么是 ts?ts 全称是 TypeScriptTypeScript 可以理解为是 JavaScript 的扩展,扩展了 js 的语法,因此我们可以在 ts 中继续写 js 的代码而不回报错TypeScript 又叫做静态的 JavaScript,不能直接引入到 html 中,不能直接被浏览器识别,需要经过 ts 转换器或者是 babel 转化后才能使用2.如何理解静态语言和动态语言?类型系统按照类型检查的时机来分类,分为动态类型和静态类型,动态是在运行时候才检查数据类型,静态是在编译时候检查

2022-05-06 11:49:40 15865

原创 js的原型、闭包、拷贝和this的指向以及js的数据类型判断

js 面试题的四大金刚闭包 深拷贝浅拷贝 原型相关的 ajax 相关的一、原型和原型链 *prototype每个函数都有一个 prototype 属性,被称为显式原型,里面包含了这个构造函数公共的方法2._ proto _每个实例对象都会有_ proto 属性,其被称为隐式原型每一个实例对象的隐式原型 proto _属性指向自身构造函数的显式原型 prototypeconstructor每个 prototype 原型都有一个 constructor 属性,指向它关联的构造函数。原型链

2022-05-06 11:47:01 111

原创 es6 的基础知识

async 和 await、以及他们和 promise 的区别?⾸先 async 和 await 是解决异步的终极⽅案,async 和 await ⼀般配和使⽤,当我们给函数前⾯加上关键字 async,这个时候,这个函数的返回值就是⼀个 promise. ⽽ await 是⼀个同步的操作,await 只能配合 async 只能,不然会报错,await 后⾯可以是表达式,也可以是⼀个 promise,在await 下⾯的代码必须得等待 await 执⾏完之后才能在执⾏他们和 promise 的区别就

2022-05-03 19:50:32 211

原创 对于promise的理解

promisepromise 是 es6 提供的一种异步解决方案,在我的理解中 promise 就是把异步操作换了一种写法从之前的嵌套回调函数 变成了链式的写法promise 本身其实就是一个容器 里面放异步的代码 这样就可以让这个异步的代码执行.then .catch 的操作1.1 说⼀下你对 promise 的理解?(必问)promise 是 es6 提供的一种异步解决方案,在我的理解中 promise 就是把异步操作换了一种写法从之前的嵌套回调函数 变成了链式的写法1.2 什么是 pro

2022-05-03 19:34:18 166

原创 vue组件传值的八种方式和多环境变量

组件传值的八种方式父传子首先在使用子组件的标签上 通过自定义属性传递变量 在子组件中 通过 props 接受在接收的时候有两种接收方式 数组形式 和 对象形式 对象形式可以规定传来的变量的数据类型(type)默认值(default)以及是否必填(required)子传父首先在使用子组件的标签上定义一个自定义事件 在子组件里通过 this.$emit 去调用这个自定义事件 $emit 方法的第一个参数是自定义事件的名字 第二个参数是就是子组件要传递给父组件的变量 最后在父组件接收使用就可

2022-05-03 17:41:41 641

原创 vue 的路由导航守卫扩展

路由导航守卫扩展我理解的导航守卫 就是一座房子的保安 只有保安允许了才能访问页面之前说三种六个 还有一个用的不是很多的全局守卫 叫做全局解析守卫 beforeResolve导航守卫一共有三种全局的守卫 守卫所有的页面beforeEach 路由前置守卫beforeResolve 路由解析之前afterEach 路由离开全局守卫 beforeEach 和 beforeResolve他们两个都会在路由跳转前就执行 参数都是 to from next他们两个的区别 执行的时机不一样 before

2022-05-03 17:40:13 51

原创 vue中的虚拟dom和diff算法

虚拟dom虚拟 dom 是利用 js 描述元素与元素的关系,用 js 对象来表示真实的 DOM 树结构,创建一个虚拟 DOM 对象由于在浏览器中操作 DOM 是很昂贵的。频繁的操作 DOM,会产⽣⼀定的性能问题.在组件渲染的时候会调用 render 函数,这个函数会生成一个虚拟 dom,再根据这个虚拟 dom 生成真实的 dom,然后这个真实的 dom 会挂载到我们的页面中。如果只是渲染一个页面后期不改动的话 那么虚拟 dom 其实成本更高 因为 都要渲染成真实的 dom如果组件内有响应的数据,数

2022-05-03 17:34:15 343

原创 vue组件间的常用的三种通讯方式

父传子首先在使用子组件的标签上 通过自定义属性传递变量 在子组件中 通过 props 接受在接收的时候有两种接收方式 数组形式 和 对象形式 对象形式可以规定传来的变量的数据类型(type)默认值(default)以及是否必填(required)子传父首先在使用子组件的标签上定义一个自定义事件 在子组件里通过 this.$emit 去调用这个自定义事件 $emit 方法的第一个参数是自定义事件的名字 第二个参数是就是子组件要传递给父组件的变量 最后在父组件接收使用就可以了兄弟传值利用中央事件总线

2022-04-24 10:35:33 113

原创 vue的watch监听的用法

watch监听的用法watch 监听路由的变化监听路由的话就是监听 $router watch: { $route: { handler(newval, oldval) { console.log(newval, oldval); }, }, },watch 监听 数据的变化watch 有三个参数 deep immediate handler当我们不需要 deep 和 immediate 的时候 就可以简写为一个函数 这个函数就是 h

2022-04-22 19:02:39 1970

原创 vue2的路由守卫

vue2的路由守卫路由的导航守卫 又叫做路由的钩子函数(生命周期函数)就是在跳转页面的 时候把 路由拦下来 做一些操作 再放行一共有三种第一种是全局守卫beforeEach 路由进入之前afterEach 路由进入之后第二种 组件内守卫beforeRouteEnter 路由进入之前beforeRouteUpdate 路由更新之前beforeRouteLeave 路由离开之前第三种独享守卫beforeEnter 路由进入之前有三个参数to from nextnext 这个参数

2022-04-22 18:59:13 3713

原创 vue2的路由模式以及原理和区别

vue2的路由模式以及原理和区别vue 的路由模式⼀共有两种,分别是哈希和 history.他们的区别是 hash 模式不会包含在 http 请求当中,并且 hash 不会重新加载⻚⾯,⽽使⽤ history 模式的话,如果前端的 url 和后端发起请求的 url 不⼀致的话,会报 404 错误,所以使⽤ history 模块的话我们需要和后端进⾏配合.history 的原理就是利⽤ ht...

2022-04-22 18:54:58 1013

原创 modules的理解

modules的理解把仓库里的数据分模块管理每个模块里又有四个核心 state mutations getters actions然后引入仓库 并且在 modules 下注册模块在定义的 modules 里开启一个命名namespaced:trueexport default { computed: { arr() { return this.$store.state.a.arr; //使用 模块a里的state数据arr }, }, meth

2022-04-22 18:51:07 193

原创 vue中页面和组件生命周期的执行顺序

页面—beforeCreate页面—created页面—beforeMount组件—beforeCreate组件—created组件—beforeMount组件—mounted页面—mounted

2022-04-22 11:03:29 1105

原创 vue的路由模式

vue 的路由模式⼀共有两种,分别是哈希和 history.他们的区别是 hash 模式不会包含在 http 请求当中,并且 hash 不会重新加载⻚⾯,⽽使⽤ history 模式的话,如果前端的 url 和后端发起请求的 url 不⼀致的话,会报 404 错误,所以使⽤ history 模块的话我们需要和后端进⾏配合. history 的原理就是利⽤ html5 新增的两个特性⽅法,分别是 pushState 和 replaceState 来完成的.........

2022-04-22 10:59:48 5882

原创 vuex的理解

vuex 是 vue 的状态管理工具 管理项目中的公共数据 能够在所有的组件中使用 一共有五大核心 state 存放公共数据的地方 通过 this.$store.state.xxx调用 mutations 修改 state 的地方 只有这里能修改 通过this.$store.commit 调用 getters 相当于是之前的计算属性 通过 this.$store.getters 调用 actions 执行异步操作的地方 通过 this.$store.dispatch 调用 modules 模块化vuex

2022-04-22 10:58:12 502

原创 vue生命周期

什么是生命周期函数生命周期函数 又叫钩子函数 是到了某一个时间点会自动触发 我们讨论的是 vue 实例的钩子函数 从 vue 实例创建到销毁的过程中 到了一定的时间节点就会触发生命周期函数有哪些创建阶段 beforeCreate 实例创建之前 这个时候什么都没有 data methods 都不能用 也没有 this created 创建之后 也是最早的可以使用 data 和 methods 的钩子函数 这个时候有 this 了 beforeMount 组件挂载之前 .

2022-04-22 10:40:03 563

空空如也

空空如也

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

TA关注的人

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