自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据类型(ts)

1、基本类型类型声明类型声明是 TS 非常重要的一个特点通过类型声明可以指定 TS 中变量(参数、形参)的类型指定类型后,当为变量赋值时,TS 编译器会自动检查值是否符合类型声明,符合则赋值,否则报错简而言之,类型声明给变量设置了类型,使得变量只能存储某种类型的值语法:let 变量: 类型;let 变量: 类型 = 值;function fn(参数: 类型, 参数: 类型): 类型{ ...}自动类型判断TS 拥有自动的类型判断

2022-05-06 19:43:46 500

原创 TypeScript 开发环境搭建

下载 Node.js64 位:https://nodejs.org/dist/v14.15.1/node-v14.15.1-x64.msi32 位:https://nodejs.org/dist/v14.15.1/node-v14.15.1-x86.msi安装 Node.js使用 npm 全局安装 typescript进入命令行输入:npm i -g typescript如果是 yarn 就执行 yarn add -g typescript输入 tsc -v 查看版本号 检..

2022-05-06 19:42:03 897

原创 什么是强类型和弱类型

强类型和弱类型是类型系统按照 是否允许隐式转换 来分类强类型的语言 指的是 强制数据类型定义的语言,也就是说如果一个变量被指定了某一个类型,如果不经过强制数据类型转换,他永远都是这个数据类型。强类型好处是 更加严谨更加安全。弱类型 是 数据类型可以被忽略的语言,与强类型相反,一个变量可以赋不同的数据类型的值。好处是 编写代码速度更快更简单。...

2022-05-06 19:40:55 1642

原创 如何理解静态语言和动态语言

类型系统按照类型检查的时机来分类,分为动态类型和静态类型,动态是在运行时候才检查数据类型,静态是在编译时候检查数据类型静态语言是在编译期间就会做数据类型的检查,也就是要在写代码的时候就声明变量的数据类型。大部分的后台语言比如 java,php 等以及我们要学的 ts 都是静态的。动态语言是指在运行期间才会去做类型检查的语言,也就是说动态语言声明的时候不需要指定数据类型。比如 javascript 和 python 都是动态的。...

2022-05-06 19:40:23 862

原创 什么是 ts

ts 全称是 TypeScriptTypeScript 可以理解为是 JavaScript 的扩展,扩展了 js 的语法,因此我们可以在 ts 中继续写 js 的代码而不回报错TypeScript 又叫做静态的 JavaScript,不能直接引入到 html 中,不能直接被浏览器识别,需要经过 ts 转换器或者是 babel 转化后才能使用...

2022-05-06 19:39:36 494

原创 数据类型判断

数据类型判断大概有四种 typeof、instanceof、constructor、Object.prototype.toString.call()比如说检测 num=10 的数据类型1.Type:typeof 检测数据类型会返回对应的数据类型小写字符。引用数据类型中的:Array,Object,Date,RegExp。不可以用 typeof 检测。都会返回小写的 objectconsole.log(typeof num);2 . instanceof除了使用 typeof 来判断,还可以使用

2022-05-06 18:44:54 82

原创 This 的指向

在 js 中 this 不是固定不变的,它会随着执行环境的改变而改变。要注意的是 this 取什么值,是在执行时确认的,定义时无法确认。this 的调用大概分为五种场景: 1.浏览器里,在全局范围内的 this 指向 window 对象; 2.在函数中,this 永远指向最后调用他的那个对象; 3.构造函数中,this 指向 new 出来的那个新的对象; 4.箭头函数中 this 比较特殊,箭头函数 this 为父作用域的 this,不是调用时的 this.要知道前四种方式,都是调用时确定,也就是动态的,

2022-05-06 18:43:46 67

原创 深拷贝 浅拷贝

深拷贝拷贝的是值 浅拷贝拷贝的是地址深拷贝和浅拷贝的区别 1.浅拷贝: 将原对象的引用直接赋给新对象,新对象只是原对象的一个引用,而不复制对象本身,新旧对象还是共享同一块内存2.深拷贝: 创建一个新的对象和数组,将原对象的各项属性的“值”(数组的所有元素)拷贝过来,是“值”而不是“引用”,新对象跟原对象不共享内存,修改新对象不会改到原对象基本数据类型存储在栈中引⽤类型的对象存储于堆中...

2022-05-06 18:43:00 90

原创 原型和原型链

prototype每个函数都有一个 prototype 属性,被称为显式原型,里面包含了这个构造函数公共的方法2._ proto _每个实例对象都会有_ proto 属性,其被称为隐式原型每一个实例对象的隐式原型 proto _属性指向自身构造函数的显式原型 prototypeconstructor每个 prototype 原型都有一个 constructor 属性,指向它关联的构造函数。原型链获取对象属性时,如果对象本身没有这个属性,那就会去他的原型_ proto 上去找,如果还查不到,.

2022-05-06 18:39:09 51

原创 闭包的理解

1.闭包闭包是指可以访问另一个函数内部变量的函数

2022-05-04 16:45:12 216

原创 作用域(全局作用域和函数作用域)

作用域:作用域就是一个变量可以使用的范围,主要分为全局作用域和函数作用域全局作用域就是 Js 中最外层的作用域函数作用域是 js 通过函数创建的一个独立作用域,函数可以嵌套,所以作用域也可以嵌套Es6 中新增了块级作用域(由大括号包裹,比如:if(){},for(){}等)自由变量:当前作用域外的变量都是自由变量,作用域链就是 自己没有这个变量就从上一级作用域查找,直到找到为止,直到找到顶层 window,没有的话就报错变量提升:每个 var 声明的变量,function..

2022-05-04 16:42:47 286

原创 数据类型简介

JavaScript(以下简称 js)的数据类型分为两种:原始类型(即基本数据类型)和对象类型(即引用数据类型);两种类型的区别是:存储位置不同:基本数据类型存储在栈中引⽤类型的对象存储于堆中js 常用的基本数据类型包括 undefined - - (未定义)、null- - (空的)、number - - (数字)、boolean- - (布尔值)、string- - (字符串)、Symbol - - (符号);js 的引用数据类型也就是对象类型 Object- - (对象)..

2022-05-04 16:39:11 108

原创 map 和 set 还有 symbol

是 es6 新增加的两种数据结构 数据结构不是数据类型set 这种数据结构的特点是值是唯一的 所以可以用来数组去重let arr = [1, 2, 3, 4, 4, 3, 5];let data = […new Set(arr)];map 这种数据结构 跟对象相似放的是一个键值对形式的数据 跟对象的区别是他的 key 值可以是任何的数据类型新增加的 symbol 才是数据类型// symbol 是一种新的数据类型// symbol 的值永远都是唯一的let a = Symbol.

2022-05-04 16:37:50 340

原创 class 与 class 继承

传统的 javascript 中只有对象,没有类的概念。它是基于原型的面向对象语言。Es5 的时候通过构造函数来创建类 到了 es6 我们就可以通过 class 关键字来创建类,跟传统的面向对象的语言更加接近。ES5 中如果要生成一个对象实例,需要先定义一个构造函数,然后通过 new 操作符来创建实例。ES6 中的类ES6 引入了 class(类)这个概念,通过 class 关键字可以定义类。该关键字的出现使得 javascript 在对象写法上更加清晰,更像是一种面向对象的语言。注意项: 1.

2022-05-04 16:36:57 315

原创 Javascript 如何实现继承?

答:JS 继承实现⽅式也很多,主要分 ES5 和 ES6 继承的实现先说⼀下 ES5 是如何实现继承的ES5 实现继承主要是基于 prototype 来实现的,具体有三种⽅法⼀是实例继承:即 B.prototype=new A() 让 b 的原型等于 a 的实例⼆是借⽤构造函数继承(call 或者 apply 的⽅式继承)function B(name,age) {A.call(ths,name,age)}三是组合继承组合继承是结合第⼀种和第⼆种⽅式再说⼀下 ES6 是如何实现继

2022-05-03 22:57:43 46

原创 JavaScript 原型,原型链的理解?

prototype 显式原型每个函数都有一个 prototype 属性,被称为显式原型,里面包含了这个构造函数公共的方法_ proto 隐式原型每个实例对象都会有_ proto 属性,其被称为隐式原型每一个实例对象的隐式原型 proto _属性指向自身构造函数的显式原型 prototypeconstructor每个 prototype 原型都有一个 constructor 属性,指向它关联的构造函数。原型链获取对象属性或者方法的时候,如果对象本身没有这个属性,那就会去他的原型_ proto.

2022-05-03 22:56:39 453

原创 new 操作符具体⼲了什么?

在 JavaScript 中, new 操作符⽤于创建⼀个给定构造函数的实例对象new 的实例可以访问构造函数函数里的属性也能访问 原型上的方法创建⼀个新的对象 obj将对象与构建函数通过原型链连接起来将构建函数中的 this 绑定到新建的对象 obj 上根据构建函数返回类型作判断,如果是原始值则被忽略,如果是返回对象,需要正常处理...

2022-05-03 22:55:45 174

原创 es5 的面向对象和 es6 的面向对象

es5 的面向对象是通过 new 一个构造函数实现的es6 的面向对象是通过 class 实现的 es6 的 class 就是面向对象的语法糖(实现同样的功能 但是代码更少 更加简洁)面向对象是一个概念或者编程思想,面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式(在 js 中一切皆对象比如说数组 object number string 等等 这些都是内置对象那么怎么自定义对象es5 的时候.

2022-05-03 22:54:19 163

原创 数组和字符串的方法

一、数组的方法shift() ;删除数组中第一个元素,并将长度减1.pop():删除数组中最后一个元素,并将长度减1.unshift():往数组前面添加一个或多个数组元素,长度要改变。如:arrObj.unshift(“a”,”b”,”c”);push():往数组结尾添加一个或多个数组元素,长度要改变。如:arrObj.push(“a”,”b”,”c”);concat() : 方法用于连接两个或多个数组, 不改变原数组。返回一个新的数组。reverse() 逆向排序, 原数组也被逆向排序了

2022-05-03 22:51:27 66

原创 forEach、map、filter、reduce、some、every等⽅法的作⽤

reduce 遍历数据求和。some 遍历数组每⼀项,有⼀项返回true,则停⽌遍历,结果返回true。不改变原数组遍历数组每⼀项,每⼀项返回true,则最终结果为true。当任何⼀项返回false时,停⽌遍历,返回false。不改变原数组forEach() ⽅法: 循环原来的数组map() ⽅法: 循环原数组并映射⼀个新数组出来filter() ⽅法: 过滤不需要的数组元素...

2022-04-30 23:43:41 112

原创 如何将多个数组合并成为⼀个数组

es5 :concatfor循环Es6:扩展运算符map⽅法

2022-04-30 23:41:16 217

原创 如何检测对象⾥⾯有没有属性(或者如何检测⼀个对象是否为 空)?以及如何获取对象⾥⾯所有的属性名?

通过object.keys⽅法, 返回值数组,数组⾥⾯包含的是所有属性名Object.hasOwnProperty()使⽤for in的⽅式

2022-04-30 23:40:36 91

原创 数组去重的⽅法

indexof双层for循环set⽅法

2022-04-30 23:39:41 67

原创 es6如何实现类以及如何实现类的继承

es6提供了类的这个概念,在es5中是没有类的这个概念,如果想在es5中实现⼀个类型,我们只能构造函数的⽅式去创建⼀个类,⽽es6给我们提供⼀个更⽅便 的⽅.法,那就是class,这个class理解为是构造函数的语法糖.我们创建⼀个类只需要⽤过关键词class去声明就可以了 , 他的调⽤⽅式和构造函数的调⽤⽅式是⼀样的通过es6的类还给我们提供⼀个extends这样的⼀个关键字,来实现继承...

2022-04-30 23:38:35 388

原创 for in 与for of的区别

For in可以遍历对象 ⽽ for of遍历对象会报错for in 遍历数组得到的数组的下表 ⽽for of遍历得到的时候数组⾥⾯的每⼀个元素

2022-04-30 23:35:39 215

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

在es6中,提供了⼀种简洁的函数写法,我们称作“箭头函数”。写法:函数名=(形参)=>{……} 当函数体中只有⼀个表达式时,{}和return可以省略,当函数体中形参只有⼀个时,()可以省略。特点:箭头函数中的this始终指向箭头函数定义时的离this最近的⼀个函数,如果没有最近的函数就指向window。区别:箭头函数不能⽤于构造函数,不能使⽤new** ⽽普通函数可以在普通函数中,this总是指向调⽤它的对象,如果⽤作构造函数,this指向创建的对象实例,⽽箭头函数指向箭头函数

2022-04-28 19:37:15 32

原创 map⽅法、forEach⽅法、filter⽅法的作⽤以及他们之间的区别

forEach() ⽅法: 循环原来的数组map() ⽅法: 循环原数组并映射⼀个新数组出来filter() ⽅法: 过滤不需要的数组元素

2022-04-28 19:31:14 49

原创 数组新增的⽅法

Array.from⽅法 将类数组转化为真正的数组Array.of⽅法 将数值转化为数组copyWithin() ⽅法是将指定位置的成员复制到其他位置(会覆盖原有成员)find⽅法和findindex⽅法 查找符合条件的元素。 查找符合条件元素的下表includes⽅法可以查看表个数组是否包含给定的值flat⽅法将多维数组转化为1维数组或者指定维度的数组遍历的数组的⽅法:forEach 类似于for循环,主要是⽤来遍历数组map⽅法 主要作⽤是映射⼀个新的数组,可.

2022-04-28 19:28:47 45

原创 es6新增的特性

新增了变量声明⽅式,也就是let和const新增了解构赋值新增了⼀个数组⽅法 字符串⽅法 正则表达的⽅法 函数的⼀些写法 对象的⽅法promiseasync awaitclass 以及 继承模块化新的数据类型⼤概能想到暂时只有这么多,在项⽬中我经常使⽤let和const 箭头函数。解构赋值 promise 还 有 async await...

2022-04-28 19:25:47 56

原创 promise

promise 是 es6 提供的一种异步解决方案,在我的理解中 promise 就是把异步操作换了一种写法从之前的嵌套回调函数 变成了链式的写法promise 本身其实就是一个容器 里面放异步的代码 这样就可以让这个异步的代码执行.then .catch 的操作文章目录一、 说⼀下你对 promise 的理解?(必问)二、 什么是 promise?通过 promise 能够解决什么问题?三、 说⼀下 promise 的特点?也就是三种状态?四、 说⼀下 promise 怎么⽤?五、 我们之前遇到.

2022-04-28 19:19:13 31

原创 什么是 es6

是 ECMAScript 的第六个版本 在 es5 的基础上新增加了一些语法js 分成三部分 dom(文档对象模型) bom(浏览器对象模型) ECMAScript(js 语法)

2022-04-28 19:09:21 83

原创 async 和 await、以及他们和 promise 的区别

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

2022-04-28 19:08:02 63

原创 generator 函数

generator 函数也是 es6 的处理异步回调的一种写法 但是这种写法现在被 async 取代了generator 函数 用*表示 跟 yield 搭配使用

2022-04-28 19:06:23 42

原创 promise 的 all 和 race 方法

promise 还给我们提供了.all 和 race, 其中 all ⽅法的作⽤是将多个请求合并成⼀个请求, ⽐如当⾸⻚要请求 10 个接⼝,我们可以 promise.all 进⾏并,.race 的作⽤也可以将多个请求合并成⼀个请求,不过是谁先请求成功就先返回谁....

2022-04-28 19:04:57 113

原创 var 、let、const 之间的区别

let var 是声明变量的 const 是声明常量的var 声明的变量会声明提升 但是 const 和 let 不会 (声明提升就是声明的变量会把声明语句提到作用域的顶端 但是赋值语句留在原地)var 在全局作⽤域下声明变量会导致变量挂载在 window 上,其他两者不会let 和 const 声明的是块级作用域 var 声明的是函数作用域块级作用域:只要是大括号就能区分作用域函数作用域: 只有函数才能区分作用域...

2022-04-28 19:03:46 34

原创 如何对axios进⾏⼆次封装?以及api如何封装

在src⽂件夹内创建utils⽂件夹在utils⽂件夹内创建request.js⽂件在request.js内引⼊axios使⽤axios.create⽅法创建axios的实例,在axios.create⽅法⾥⾯可以配置请求的公共地址和超时时间以及其他的⼀些配置在创建请求拦截器和响应拦截器在请求拦截器⾥⾯可以获取vuex的token,并通过config.header.token = vuex的token,将token发送给后台在请求拦截器⾥⾯我们配置loading加载在响应拦截器⾥⾯我们可以结.

2022-04-26 16:25:20 40 1

原创 axios的拦截器的作⽤ 应⽤场景都有哪些

拦截器有两种 一个是请求拦截一个是响应拦截拦截器不需要手动调用而是每次发送 http 请求的时候都会自动触发我们一般在请求拦截中 放全局的 loading 和 token在响应拦截中关闭全局的 loading 和对 token 进行过期处理 还可以处理错误编码字典...

2022-04-25 17:01:59 157

原创 vue和jquery的区别

⾸先呢 jquery 他是⽤ js 封装的⼀个类库,主要是为了⽅便操作 dom 元素,⽽ vue 他是⼀个框架,并且呢,他会从真实 dom 构建出⼀个虚拟的 dom 树,通过 di!算法渲染只发⽣改变的 dom 元素,其他的相同的 dom 元素不⽤在重新渲染. ⽽使⽤ jquery 去改变 dom 元素的时候,即使有相同的 dom 元素也会重新渲染, jq 重点操作 dom,而 vue 重点操作数据。以上就是我对 vue 和 jquery 区别的理解....

2022-04-25 17:00:23 925

原创 vue中data发⽣变化,视图不更新如何解决

在 vue2 中 vue 实例的 data 数据是响应式 的 就是数据变了 视图也会跟着变,如果给某一个 data 新添加了一个字段 这个新添加的字段因为 js 的限制不响应,需要使用 this.$set 方法代替原本的普通添加方法 就能实现响应,这个方法的三个参数 是给谁添加 添加的字段 初始值 如果不是在组件中 用这个方法 那么就用 Vue.set...

2022-04-25 16:58:39 45

原创 为什么vue中data必须是⼀个函数

如果data是⼀个函数的话,这样每复⽤⼀次组件,就会返回⼀份新的data,类似于给每个组件实例创建⼀个私有的数据空间,让各个组件实例维护各⾃的数据。⽽单纯的写成对象形式,就使得所有组件实例共⽤了⼀份data,就会造成⼀个变了全都会变的结果。所以说vue组件的data必须是函数。这都是因为js的特性带来的,跟vue本身设计⽆关。...

2022-04-25 16:57:33 58

空空如也

空空如也

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

TA关注的人

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