
es6
文章平均质量分 53
基础知识
Api工程师~
这个作者很懒,什么都没留下…
展开
-
02 解构赋值
解构赋值 1.1 什么是解构赋值 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构 只要某种数据结构具有 Iterator 接口,都可以采用数组形式的解构赋值 1.2 数组解构赋值和对象解构赋值的区别 数组的元素是按次序排列的,变量的取值由它的位置决定; 而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。 2.1 数组的解构赋值 // 报错 let [foo] = 1; let [foo] = false; let [foo] = NaN; let [foo] = un原创 2021-08-22 21:40:05 · 120 阅读 · 0 评论 -
01let和const
1.1 let 作用 声明局部变量 特性 不存在变量提升 不能重复声明 不作为window属性 块级作用域 暂时性死区(声明前不能使用) 1.2 const 作用 生成常量 特性 与let一致 globalThis 对象 Es5模块中的this是window Es6模块中的this是undefined 函数中的this,如果函数不是作为对象的方法执行,而是单纯作为函数执行,this会指向顶层对象,但是严格模式下this会返回undefined 不管是严格模式,还是普通模式,new Functi原创 2021-08-22 20:36:53 · 77 阅读 · 0 评论 -
es6模块
模块 模块分为导入import和导出export两个模块 Es6模块自动开启严格模式,不管你有没有在模块头部加上use strict 模块可以导入和导出各种类型的值 每一个模块内声明的变量都是局部变量,不会污染全局变量 每一个模块只加载一次(是单列的),若再去加载同目录下同文件,直接从内存中读取 export,import用法 导出的函数声明与类声明必须要有名称(export default命令另外考虑) 不仅能导出声明还能导出引用(例如函数) export命令可以出现在模块的任何位置,但必须处于模块原创 2021-05-12 23:39:52 · 98 阅读 · 0 评论 -
call apply bind原理刨析及实现
渣渣逆天转载 2021-04-27 12:04:38 · 82 阅读 · 0 评论 -
class 类
class类的基础使用 // 手机 // 实例成员只能通过实例化对象来访问 // function Phone(brand, price) { // this.brand = brand // this.price = price // } // 添加方法 // Phone.prototype.call = function () { // console.log('我可以打电话!!') // } //原创 2021-04-27 11:39:19 · 158 阅读 · 0 评论 -
对象方法(包含es6)
1.Object.assign(target,source1,source2,...) 方法主要用于对象的合并,将源对象source的所有可枚举属性合并到目标对象target上,此方法只拷贝源对象的自身属性,不拷贝继承的属性。(从后向前覆盖) Object.assign方法实行的是浅拷贝,而不是深拷贝。也就是说,如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用。同名属性会替换。 Object.assign只能进行值的复制,如果要复制的值是一个取值函数,那么将求值后再复制。 Objec原创 2021-04-24 23:51:31 · 1216 阅读 · 0 评论 -
var let const 区别
var变量提升 重复声明,顶层(window)属性,全局作用域和函数作用域 let无提升,不能重复声明,不作为window属性,全局作用域和块级作用域({})暂时性死区(TDZ,同作用域下先声明,再运用) const和let类似,声明是必须赋值,不能修改值,可以在不改变引用类型数据的地址时,修改里面的数据,数据可以冻结(object.freeze(数组或对象)) const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。对于简单类型的数据(数值、字符串、...原创 2021-04-26 16:52:37 · 106 阅读 · 0 评论 -
对象的基础用法和解构赋值
数组解构赋值 let [a,b]=[1,2] //交换两个变量的值 let[a,b]=[b,a] //扩展运算符的运用 let[a,...b]=[1,2,3] //有默认值 右侧的参数等于undefined,默认值生效 let[a=3,b]=[1,2] 对象解构赋值 let {a,b}={a:1,b:2} //等价于 let {a:a,b:b}={a:1,b:2}; let{a,...b}={a:1,b:2,c:3} ...原创 2021-04-26 16:50:30 · 514 阅读 · 0 评论 -
es6 map与set
set 定义: Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用,Set对象是值的集合,你可以按照插入的顺序迭代它的元素。Set中的元素只会出现一次,即 Set 中的元素是唯一的 Set本身是一个构造函数,用来生成 Set 数据结构 语法: let set = new Set([1, 1, 2, 2]) console.log(...set) 属性:size 返回长度 console.log(new Set([1,2,1,2]).size) // 2 操...原创 2021-04-26 16:43:58 · 124 阅读 · 0 评论 -
es6 Promise,生成器函数,async
生成器函数 简单使用: // 生成器就是一个特殊的函数 // 异步编程 纯回调函数 node gs ajax mongodb function* gen() { // console.log(111); yield '一只没有耳朵'; // console.log(222); yield '一只没有尾巴'; // console.log(333); yield '真奇怪'; // console.lo原创 2021-04-26 16:15:04 · 219 阅读 · 0 评论 -
数组方法 包含es6
1arr.push()从后面添加元素,返回值为添加完后的数组的长度 let arr = [1,2,3,4,5] console.log(arr.push(5)) // 6 console.log(arr) // [1,2,3,4,5,5] 2arr.pop()从后面删除元素,只能是一个,返回值是删除的元素 let arr = [1,2,3,4,5] console.log(arr.pop()) // 5 console.log(arr) //[1,2,3,4] 3arr....转载 2021-04-25 09:25:04 · 290 阅读 · 0 评论 -
es6 Symbol iterator接口
Symbol定义:一种新的原始数据类型,表示独一无二的值,是一种类似字符串的数据类型 特点: 值是唯一的,用来解决命名冲突的问题 值不能与其他数据进行运算 定义的对象属性不能使用for...in 循环遍历,但是可以使用Reflect.ownKeys来获取对象的所有键名 // 创建Symbol() let s = Symbol(); let s2= Symbol('小红') let s3= Symbol('小红') consle.log(s2===s3) //false //Symbol.fo原创 2021-04-26 16:00:14 · 164 阅读 · 0 评论 -
es6 箭头函数 rest参数 扩展运算符
Es6 箭头函数 语法: 普通函数: fn=function(){} 箭头函数: fn=()=>{} 特性: this是静态的,this始终指向函数声明时所在作用域下的this的值(使用call,bind改变指向无效) 不能作为构造实例化对象 不能使用arguments变量 箭头函数简写( 1,省略小括号,当形参只有一个的时候 2,省略花括号,当代码体只有一条语句的时候,此时return必须胜率 ...原创 2021-04-24 12:47:59 · 193 阅读 · 0 评论 -
es6 字符串
es6 新引入字符串方式 `` 作用: 可以直接出现换行符 可以直接进行变量拼接 let name=`小红花` let str=`<ul> <li>${name}</li> </ul> `原创 2021-04-25 18:40:10 · 59 阅读 · 0 评论 -
es6结构赋值
数组结构赋值 let [a,b]=[1,2] //交换两个变量的值 let[a,b]=[b,a] //扩展运算符的运用 let[a,...b]=[1,2,3] //有默认值 右侧的参数等于undefined,默认值生效 let[a=3,b]=[1,2] 对象结构赋值 let {a:a,b:b}={a:1,b:2}; let {a,b}={a:1,b:2} let{a,...b}={a:1,b:2,c:3} ...原创 2021-04-22 15:56:44 · 107 阅读 · 0 评论