自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 闭包与this指向问题

1.如何产生闭包(closure)上图代码:// 函数作为返回值function create() { const a = 100 return function () { console.log(a) }}const fn = create()const a = 200fn() // 100// 函数作为参数被传递function print(fn) { const a = 200 fn()}const a = 100

2021-01-19 19:31:37 100

原创 js操作DOM的方法总结整理

一、什么是DOM?DOM(Document Object Model)文档对象模型。DOM为HTML提供了结构化表示方法,定义了访问和处理文档结构的方法规范。HTML可以理解成是由DOM节点构成的集合,主要元素节点、文本节点、属性节点三部分构成。二、js操作DOM的方法js操作dom主要分对元素节点、文本节点、属性节点的增删改查;判断元素节点类型新增节点:document.createElement(''); //创建一个元素节点document.createTextNode(''); /

2021-01-19 15:44:17 459

原创 作用域和自由变量

作用域(定义)变量作用域:就是一个变量可以使用的范围作用域(种类)js中首先有一个最外层的作用,全局作用域;js中可以通过函数来创建一个独立作用域称为函数作用域,函数可以嵌套,所以作用域也可以嵌套;es6中新增了块级作用域(大括号,比如:if{},for{},while(){}…);es6作用域,只适用于const,let自由变量**自由变量的概念:**当前作用域没有定义的变量作用域链自由变量向上级作用域一层一层查找,直到找到为止,最高找到全局作用域,就形成了作用域链。

2021-01-19 14:36:07 61

原创 javascript原型和原型链

1.prototype每个函数都一个prototype属性,被称为显示原型2._ _proto_ _每一个实例对象都会有_ _ proto _ _属性,其被称为隐式原型每一个实例对象的隐式原型_ _ proto _ _属性指向自身构造函数的显示原型prototype3.constructor每个prototype原型都有一个constructor属性,指向它关联的构造函数4.原型链获取对象属性时,如果对象本身没有这个属性,那就会去他的原型__proto__上去找,如果还查不到,就去找原型

2021-01-19 14:15:14 68

原创 前端常见浏览器兼容性问题解决方案

一、css兼容1.不同浏览器的标签默认的margin和padding不同解决方案:1.css里*{margin:0;padding:0;}但是性能不好2.一般我们会引入reset.css样式重置2.css3新属性,加浏览器前缀兼容早期浏览器-moz-兼容火狐浏览器-webkit兼容safari,谷歌浏览器-o-兼容欧鹏浏览器-ms-兼容IE浏览器使用:.myClass { -webkit-animation-name: fadeIn; -moz-animation-name:

2021-01-19 11:58:47 223

原创 项目介绍

1.多环境变量配置,axios请求响应拦截,api封装统一管理面试官你好,每时每刻后台管理系统这个项目是我自己独立开发完成的,下面我给您介绍一下,我是从0开始到发布上线的流程。首先,开发这个项目我用的是最新的vue脚手架3的版本。项目创建文成后,首先我会配置多个环境变量,分别是.env.development本地开发环境配置,.env.staging测试环境配置,.env.production正式环境配置,方便后期测试用,上线阶段快速切换后台接口。之后安装axios,对axios进行封装,添加请求拦截和

2021-01-14 21:35:48 173

原创 Vue路由守卫

全局守卫:beforeEach:全局前置守卫afterEach:全局后置守卫beforeResolve:全局解析守卫组件内部守卫:beforRouterEnter:进入路由之前执行beforeRouterUpdate:当路由的参数发生改变时执行beforeRouterLeave:离开路由之前执行路由独享守卫:beforeEnter:进入路由之前执行,写在路由配置信息上的全局前置守卫你可以使用router.beforeEach注册一个全局前置守卫:const router = ne.

2021-01-14 11:37:45 55

原创 vue自定义指令于自定义过滤器

除了核心功能默认内置的指令(如v-model和v-show等),Vue也允许自定义指令。有的情况下对普通DOM元素进行底层操作,这时候就会用到自定义指令如何自定义指令//1.创建局部指令var app = new Vue({ el: '#app', data: { }, // 创建指令(可以多个) directives: { // 指令名称 dir1: { inserted(el) {

2021-01-13 07:41:02 86

原创 vue-cli4打包优化(webpack优化)

项目开始时webpack配置vue-cli3以后,我们修改webpack配置,需要自己在项目根路径下创建vue.config.js文件配置proxy跨域使用vue-cli开发项目,在本地开发环境中,如果遇到跨域问题,可以通过配置peoxy的方式解决跨域问题module.exports = { devServer: { open: false, // 自动启动浏览器 host: '0.0.0.0', // localhost port: 6060, // 端口号 h

2021-01-11 16:34:53 2030

原创 vue双向数据绑定原理

话不多说先来句概念!答:vue.js是采用数据劫持结合发布者-订阅者模式的方式,通过object.definedProperty()来劫持各个属性的setter,getteer,在数据变动时发布消息给订阅者,触发相应的监听回调来渲染视图。接下来是具体实现步骤:**第一步:**需要observer的数据对象进行递归遍历,包括子属性对象的属性,都加上 setter和getter这样的话,给这个对象的某个值赋值,就会触发setter,那么就能监听到了数据变化第二步:compile解析模板指令,将模板中

2021-01-08 19:40:02 53

原创 如何介绍项目呢?

介绍你的项目?1.多环境变量,axios请求响应拦截,api封装统一管理面试官你好,《xxx》这个项目是我自己独立开发完成的,下面我给您介绍一下,我从0开始,到发不上线的流程。首先,开发这个项目我用的最新的vue脚手架4的版本。项目创建完成后,首先我会配置多环境变量,方便后期测试用,上现阶段快速切换后台接口。然后安装配置项目所用的ui框架(后台管理系统element-ui,移动端vant-ui)之后安装axios,对axios进行封装,添加请求拦截和响应拦截,我一般在请求拦截器中,给请求头添加toke

2021-01-05 17:02:11 371

原创 vuex总结

1.什么是vuex?Vuex 是一个专门为vue.js应用程序开发的状态管理模式,它由五部分组成:分别是:state,actions,mutations,getters,modulesstate:所有的数据都存在state中

2021-01-05 16:25:17 64

原创 Vue框架--移动端项目开发流程

一:创建项目方法一:全局安装脚手架:cnpm install -g @vue/clivue-cli:是vue命令行工具,需要安装它才能直接通过vue命令来操作其他的操作查看是否安装:vue-V// 如果安装成功会出现当前vue-cli的版本方法二:vue create myapp / vue ui:使用图形界创建项目二.项目目录结构分析安装好未改动的项目:三.项目开发流程1.启动项目在终端输入:cnpm run serve 让项目运行起来可以看到地址为:http://lo

2021-01-04 15:04:56 1327

原创 vant-ui按需引入

1.安装vant-ui插件#先安装vant-uicnpm install vant-ui --save # 再安装按需引入的插件cnpm i babel-plugin-import -D2.在babel.config.js中添加配置plugins: [ ['import', { libraryName: 'vant', libraryDirectory: 'es', style: true }, 'vant'] ]3.创建一个pl

2020-12-29 07:41:37 188

原创 作用域和闭包

作用域和闭包作用域分为:全局作用域、函数作用域、块级作用域(ES6新增)//ES6 块级作用域if (true) { let a = 100;}console.log(a) //会报错闭包作用域应用的特殊情况,有两种:函数作为参数被传递函数作为返回值被返回//函数作为返回值function create() { const a = 100; return function() { console.log(a) }}const fn = create()const

2020-12-28 13:42:59 53

原创 ES6中的clss与继承

ES6的classclass Studen { constructor(name,number){ this.name = name; this.number = number; } sayHi() { console.log(`姓名${this.name},学号${this.number}`) }}//通过 new 来构建实例/对象const xialuo = new Student('夏洛',100)console.log(xialuo.name)console.lo

2020-12-26 18:59:53 100

原创 变量类型与计算

变量类型和计算值类型:let a = 100;let b = a;a = 200;console.log(b) //100引用类型let a = {age:20};let b = a;b.age = 21console.log(a.age) //21常见值类型let a //undefinedlet s = 'abc';let n = 100;let b = true;let s = Symbol('s');常见引用类型let obj = {x:100};let

2020-12-26 18:24:26 116 1

原创 使用promise封装wx.request()

1.目录结构在根目录下创建http目录及api.js文件fecth.js以及http.js文件在根目录下创建env目录,创建index.js配置并导出多个开发环境module.exports={ //开发环境 Dev:{ "BaseUrl":"https://www.develep.com" }, //测试环境 Test:{ "BaseUrl":"https://www.test.com" }, //生产环境 Prod:{ "BaseUrl"

2020-12-18 21:27:31 65 1

原创 ES6中的class与继承

前言:传统的javascript中只有对象,没有类的概念。它是基于原型的面向对象语言。原型对象特点就是将自身的属性共享给新对象。这样的写法相对于其它传统面向对象语言来讲,独树一帜也可以说难以接受!ES5中的类ES5中如果要生成一个对象实例,需要先定义一个构造函数,然后通过new操作符完成。示例://构造函数名大写(非强制,但这么写有助于区分构造函数和普通函数)function Person(name,age) { this.name = name; this.age=age;}

2020-12-16 19:11:56 53

原创 ES6结构赋值

定义:解构赋值就是从目标对象或数组中提取自己想要得变量。使用场景有:element-ui,vant-ui按需引入,请求接口返回数据,提取想要得数据语法://数组结构var a, b, rest;[a, b] = [10, 20];console.log(a); // 10console.log(b); // 20//对象解构({ a, b } = { a: 10, b: 20 });console.log(a); // 10console.log(b); // 20// ...r

2020-12-16 18:59:26 62

原创 for···in和for···of的区别

for···in和for···of的区别首先一句话:(for···in取key,for···of取value)1.从遍历数组角度来说,for···in遍历出来的是key(下标),for···of遍历出来的是value(数组的值)var arr = [99,88,66,77];for(let i in arr){ console.log(i); //0,1,2,3}for(let i of arr){ consoel.log(i); //99,88,66,77}2.从

2020-12-16 18:50:35 39

原创 箭头函数与普通函数区别

一、箭头函数是匿名函数,不能作为构造函数,不能使用new箭头函数相当于匿名函数,并且简化了函数定义。箭头函数有两种格式:一种只包含一个表达式,连{ … }和return都省略掉。还有一种可以包含多条语句,这时候就不能省略{ … }和return。不能作为构造函数,不能使用new二、箭头函数内没有arguments,可以用展开运算符…解决三、箭头函数的this,始终指向父级上下文(箭头函数的this取决于定义位置父级的上下文,跟使用位置没关系,普通函数this指向调用的那个对象)var a=2

2020-12-15 20:10:48 30

原创 git&gitHub

1.什么是版本管理版本管理是一种记录文件变化的方式,以便将来查询特定版本的文件内容。2.人为维护文档版本的问题1.文档数量多且命名不清晰导致文档版本混乱2.每次编辑文档需要复制,不方便3.多人同时编辑同一个文档,容易产生覆盖3.Git是什么Git是一个版本管理控制系统,它可以在任何地点,将文档的状态作为更新记录保存起来,也可以在任何时间点,将更新记录恢复回来。3.1Git安装https://git-scm.com/downloads3.2基本工作流程3.3Git使用前配置在使

2020-12-15 19:55:49 128 1

原创 前端基础面试题

Js闭包当一个函数的返回值是另外一个函数,而返回的那个函数如果调用了其父函数的内部变量,且返回的那个函数在外部别执行,就产生了闭包闭包的三个特性函数嵌套函数内部函数可以直接访问外部函数的内部变量或参数变量或参数不会被垃圾回收机制回收闭包的优点变量长期驻扎在内存中避免全局变量的污染私有成员的存在闭包的缺点常驻内存 增大内存的使用量 使用不当会造成内存的泄露闭包的应用场景:1.函数作为参数被传递2.函数作为返回值被返回2.作用域作用域的种类分为:全局作用域 局部

2020-12-01 15:25:50 351

原创 es6中的class与继承

ES5中的类ES5中如果要生成一个对象实例,需要先定义一个构造函数,然后通过new操作符来完成。//构造函数名大写(非强制,但这么写有助于区分构造函数和普通函数)function Person(name,age) { this.name = name; this.age=age;}Person.prototype.say = function(){ return "我的名字叫" + this.name+"今年"+this.age+"岁了";}var obj=new Pe

2020-11-24 11:38:35 44

原创 Javascript原生与原型链

1. prototype每个函数都有一个prototype属性,被称为显示原型2._ proto _每个实例对象都会有_ proto 属性,其被称为隐式原型每一个实例对象的隐式原型 proto _属性指向自身构造函数的显式原型prototype3. constructor每个prototype原型都有一个constructor属性,指向它关联的构造函数。4. 原型链获取对象属性时,如果对象本身没有这个属性,那就会去他的原型__proto__上去找,如果还查不到,就去找原型的原型,一直找到最顶

2020-11-24 11:31:18 93

原创 es6解构赋值

定义:解构赋值语法是一种 Javascript 表达式。通过解构赋值, 可以将属性/值从对象/数组中取出,赋值给其他变量。语法://数组结构var a, b, rest;[a, b] = [10, 20];console.log(a); // 10console.log(b); // 20//对象解构({ a, b } = { a: 10, b: 20 });console.log(a); // 10console.log(b); // 20// ...rest 解构数组[a,

2020-11-23 16:04:16 48

原创 JavaScript中let、const、var 的区别

在ES5中,声明变量只有var和function两种形式。但是因为var声明的变量会有一定的缺点(内层变量可能覆盖外层变量的问题以及用来计数的循环变量泄露为全局变量,下面有介绍),ES6提出了使用let和const声明变量,弥补了ES5中var的缺点。1.## 标题是否存在变量提升?var声明的变量存在变量提升(将变量提升到当前作用域的顶部)。即变量可以在声明之前调用,值为undefined。let和const不存在变量提升。即它们所声明的变量一定要在声明后使用,否则报ReferenceError错。

2020-11-23 11:25:57 37

原创 git基本使用

Git是什么Git是一个版本管理控制系统(缩写VCS),它可以在任何时间点,将文档的状态作为更新记录保存起来,也可以在任何时间点,将更新记录恢复回来。Git基本工作流程Git 的使用Git 使用前配置在使用 git 前,需要告诉 git 你是谁,在向 git 仓库中提交时需要用到。1.配置提交人姓名:git config --global user.name 提交人姓名2.配置提交人姓名:git config --global user.email 提交人邮箱3.查看git配置信息:gi

2020-11-20 22:49:25 110

空空如也

空空如也

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

TA关注的人

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