![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
es6
文章平均质量分 58
学前端的菜鸟
还在学习前端的菜鸟
展开
-
es6属性描述符
属性描述符是什么?属性描述符是一个普通对象,用于描述一个属性的相关信息Object.defineProperty(对象,属性)可以设置对象的属性描述符Object.definePropertys(对象,属性)可以设置对象多个属性的属性描述符通过Object.getOwnPropertyDescriptor(对象,属性名)可以得到一个对象的某个属性的属性描述符value:属性值...原创 2020-04-30 21:57:02 · 316 阅读 · 0 评论 -
map集合
map集合的意义map集合专门用于存储多个键值对数据。诶,明明我们可以用对象来做这件事情,为什么还要用map集合呢?对象存储键值对的问题键名只能是字符串获取数据的数量不方便键名容易跟原型上的名称冲突const newObj = { name:'abc', age:123};console.log(Object.keys(newObj));创建ma...原创 2020-04-27 21:42:56 · 939 阅读 · 0 评论 -
利用set集合求数组的并集、交集、差集
并集const arr1 = [11, 22, 44, 33, 55, 33, 77];const arr2 = [66, 55, 44, 33, 88, 99, 99];console.log("并集", [...new Set([...arr1, ...arr2])]);交集const cross = [...new Set(arr1)].filter(item => a...原创 2020-04-27 20:45:33 · 1222 阅读 · 0 评论 -
set集合
set集合用于存放不重复的数据创建set集合new Set();//创建一个没有任何内容的set集合new Set(iterable);//创建一个有内容的set集合,来自于可迭代对象每一次迭代的结果如何后续操作add(数据):添加一个数据到set末尾,如果已存在,则不操作has(数据):判断set中是否存在对应的数据,set使用Object.is的方式判断两个数据是否相同,但...原创 2020-04-23 20:15:38 · 444 阅读 · 0 评论 -
es6新增生成器
什么是生成器?生成器是一个通过构造函数Generator创建的对象,它既是一个迭代器,又是一个可迭代对象。怎么创建生成器?必须使用生成器函数创建怎么书写生成器函数?function* test(){}//该函数一定返回一个生成器,*必须有,可以没有名字和function关键字生成器函数的内部执行生成器函数内部是为了给生成器每次迭代提供数据,每次调用生成器的next方法,将导致...原创 2020-04-20 17:47:40 · 174 阅读 · 0 评论 -
可迭代协议和for of循环
概念ES6规定,如果一个对象具有知名符号属性Symbol.iterator,并且属性值是一个迭代器创建函数,那么这个对象是可迭代的(iterable)可迭代对象var obj = { a:1, b:2, [Symbol.iterator](){ const keys = Object.keys(this); let i = 0; return { next:()=&g...原创 2020-04-18 20:06:11 · 121 阅读 · 0 评论 -
迷人的迭代器
迭代器1.什么是迭代?从一个数据集合中按一定顺序,不断取出数据的过程是迭代2.和遍历的区别?遍历强调要把所有数据全部取出迭代强调依次取数据,不保证取多少和取完数据3.什么是迭代器?对迭代过程的封装,通常是一个对象4.迭代模式一种设计模式,统一迭代过程,规范迭代器规格迭代器应该具有得到下一个数据的能力迭代器应该具有判断是否还有后续数据的能力js中的迭代器js规定,如果一...原创 2020-04-13 21:53:06 · 124 阅读 · 0 评论 -
es6的async和await讲解
简介async和await是es6新增的两个关键字,为了简化promise的使用asyncasync用于修饰函数,放在函数最开始的位置,被修饰的函数的返回结果一定是promise对象async function test(){ console.log(1); return 2;}//等效于function test(){ return new Promise(...原创 2020-04-12 21:49:46 · 428 阅读 · 0 评论 -
es6的promise讲解(3)
promise的其他api实例成员then:注册一个后续处理函数,当promise为resolved状态时运行该函数catch:注册一个后续处理函数,当promise为rejected状态时运行该函数finally:【es2018】注册一个后续处理函数(无参),当promise为已决时运行该函数静态成员resolved(数据):该方法返回一个resolved状态的promise...原创 2020-04-11 15:58:57 · 116 阅读 · 0 评论 -
es6中的promise讲解(2)
promise的串联当后续的promise需要用到之前的promise处理结果时,需要promise的串联。promise对象中,无论是then还是catch,它们都有一个返回值,返回的是一个全新的promise对象,它满足下面的规则。如果当前promise是未决的,那么返回的是挂起状态。如果当前的promise是已决的,那么会影响后续处理函数,并将后续处理的结果作为resolved状态...原创 2020-04-10 21:52:15 · 117 阅读 · 0 评论 -
es6中的异步处理模型详解
模型1.es6将某一件可能发生异步操作的事情分为两个阶段:unsettled和settled。unsettled:未决阶段,表示事情还在进行前期处理,还没有发生通向结果的事情settled:已决阶段,表示事情已经有了结果,事情无法逆转事情总是从未决到已决的,未决有控制何时到达已决的能力。2.es6将事情划分为三种状态:pending、resolved、rejectedpending...原创 2020-04-09 21:08:29 · 268 阅读 · 2 评论 -
es6的promise讲解(1)
promise的基本使用const pro = new Promise((resolve,reject)=>{ //未决阶段的处理 //通过调用resolve函数将promise推向resolved状态 //通过调用reject函数将......rejected状态 //resolve和reject可以传递一个参数,表示推向状态的数据})pro.then(data=>{...原创 2020-04-06 22:24:21 · 150 阅读 · 0 评论 -
es6新增符号类型(3)
知名符号知名符号是一些具有特殊含义的共享符号,通过Symbol的静态属性得到例子1.Symbol.hasInstance:该符号用于定义构造函数的静态成员,它将影响instance的判定function A() {}const a = new A();console.log(a instanceof A);function A() {}//改变instance的判定O...原创 2020-04-05 12:03:18 · 188 阅读 · 0 评论 -
es6新增符号类型(2)
共享符号可以根据某个符号名称,得到同一个符号语法Symbol.for("符号名/符号描述")例子1.得到相同的符号const symbol1 = Symbol.for("共享符号");const symbol2 = Symbol.for("共享符号");const obj1 = { a: 1, b: 2, [symbol1]: 3,};const obj2 = {...原创 2020-04-05 09:42:09 · 122 阅读 · 0 评论 -
es6新增符号类型(1)
普通符号符号是es6新增的一个数据类型,使用函数Symbol(“符号描述”)来创建。初衷符号的初衷,是为了给对象设置私有属性,只能在对象内部使用,外面无法使用。特点1.符号没有字面量2.使用typeof得到的是symbol3.每次调用Symbol函数得到的符号永远不相等4.符号作为对象的属性名存在,叫做符号属性5.符号不能被枚举,Object.getOwnPropertyName...原创 2020-04-04 22:29:47 · 178 阅读 · 0 评论 -
什么是对象解构,数组解构和参数解构
什么是解构解构是es6的一种语法规则,将一个对象或数组的某个属性提取到某个变量中注意解构不会对被解构的目标造成任何影响语法1.同名属性// var/let/const{属性名}=被解构的对象const user = { name: "abc", age: 18, sex: "男", address: { province: "重庆",...原创 2020-04-03 20:31:01 · 2344 阅读 · 1 评论 -
es6新增类详解
为什么要用类在解释这个问题之前,我们先来看看传统的构造函数的问题属性和原型方法定义分离,降低了可读性原型成员可以被枚举(for in循环能拿到原型上的属性和方法)默认情况下,构造函数可以被当做普通函数使用类的特点类声明不会被提升,存在暂时性死区类中的所有代码都在严格模式下执行类的所有方法都是不可枚举的类的所有方法不能被当做构造函数使用类的构造必须使用new来调用例子...原创 2020-04-02 13:12:22 · 235 阅读 · 0 评论 -
es6Object的新增API
新增API1.Object.setPrototypeOf:用于设置某个对象的隐式原型2.Object.getOwnPropertyNames:以前就存在,但是es6规定了返回的属性名数组的排序方法(1)先排数字,并按照升序排序(2)再排其他,按照书写顺序排序3.Object.assign:用于混合对象,会改变第一个参数对象4.Object.is:用于判断两个数据是否相等,基本上跟严格相...原创 2020-04-01 17:40:41 · 217 阅读 · 0 评论 -
es6新增对象字面量语法
新增语法1.计算属性名:属性名来自于某个表达式的值,可以用中括号来表示该属性名2.方法速写:初始化对象字面量时,方法可以省略冒号和function关键字3.成员速写:如果初始化对象字面量时,成员的名称来自于一个变量,并且和变量的名称相同,则可以进行简写例子1.计算属性名const prop1 = "name";const prop2 = "age";const obj = { ...原创 2020-04-01 17:02:03 · 199 阅读 · 0 评论 -
es6箭头函数
箭头函数首先我们需要来回顾一下this指向的问题1.对象调用函数,this指向对象2.直接调用函数,this指向全局对象3.通过new调用函数,this指向新创建的对象4.通过apply、call、bind调用函数,this指向指定的数据5.如果是DOM事件,this指向事件源箭头函数的语法与概念箭头函数是一个函数表达式,理论上,任何使用函数表达式的场景都可以使用箭头函数语法:...原创 2020-03-30 22:30:17 · 86 阅读 · 0 评论 -
es6新增展开运算符讲解
展开运算符用法:…要展开的东西es6:支持展开数组es2016:支持展开对象例子1.展开数组并传入函数var arr = [1,2,3,4,5];function test(...arg){ for(let i = 0; i < arg.length; i++){ console.log(arg[i]); }}test(...arr);...原创 2020-03-29 22:21:38 · 145 阅读 · 0 评论 -
es6剩余参数讲解
剩余参数专门用于接收末尾的所有参数,将其放到一个形参数组中,剩余参数的出现是为了解决arguments的缺陷:arguments的缺陷1.如果和形参配合使用,容易导致混乱,因为在严格模式下,传入参数后改变形参不会改变arguments对应的值。2.使用arguments获取参数,无法从函数定义上理解函数的真实意图语法function(...形参名){}注意事项1.一个函数只能...原创 2020-03-28 21:28:03 · 808 阅读 · 0 评论 -
es6参数默认值
使用在书写形参时,直接给形参赋值。如果调用函数时,没有给对应的参数赋值,那么则会自动使用默认值。例子1.使用默认值function test(a, b) { console.log(a, b);}test(undefined,2); 2.可以用参数赋值function test(a, b = a) { console.log(a, b);}test(unde...原创 2020-03-27 22:22:57 · 632 阅读 · 0 评论 -
es6中的模板字符串
为什么需要模板字符串es6之前处理字符串繁琐的两个方面:1.多行字符串2.字符串拼接var str1 = "abc\bcd\cde"console.log(str1);var str2 = "abc" + "bcd" +"cde";console.log(str2);这样写,只是让我们在书写的时候实现了多行字符串,然后真正的多行效果却并不理想。如果我们想要字符串换行,...原创 2020-03-26 22:03:27 · 303 阅读 · 0 评论 -
es6新增的变量声明方法,以及和var的区别
变量声明的三个关键字var let constvar使用var关键字声明变量会出现一些问题。1.允许重复的变量声明,数据被覆盖2.变量提升,闭包3.全局变量挂载到全局对象,污染全局变量例子1.数据被覆盖 var a = 1; function print(){ console.log(a) } var a = 2; print();//输出22.闭包func...原创 2020-03-24 23:40:40 · 222 阅读 · 0 评论