ES6学习笔记

96 阅读3分钟

好事总会发生在下个转弯。希望你的愿望都能一一实现。

本文纯属个人理解,学习记录知识的笔记,如有错误请指出,我会及时改正谢谢!!

1.ESNext指的是下一版本,每年6月都会发一版

2.let和const

var声明的变量会进行变量提升,声明的变量会在全局 let和const会生成一个块级作用域,不会进行变量提升,const会定义一个常量,但是声明对象中的key是可以改变的,其他情况是不可以改变的

3.箭头函数:

this是在位置定义的时候决定的其他函数的this是在调用时候决定的,可以简写,箭头函数不能用作构造函数(因为没有constructor而且没有arguments)

4.class

static为class类的静态属性只能通过类进行调用

class Test {
 constructor(name) {
   this.name = name
 }
 static getName(0 {
   return `${this.name} + xixixii`
 }
}

5.模板字符串

可以使用${}中间使用一些变量还支持换行操作

//面试题:编写一个render函数实现template的函数

6.解构

(1)数组的解构

let [a, b, c] = [1, 2, 3]
let [a, b] = [{name: '1'}, {name: '2'}]

(2)对象的解构

let {f1, f2} ={ f1: 'f1', f2: 'f2'}

解构的原理:针对可迭代对象的Iterator(是一种接口对各种不一样数据提供统一的的访问机制,所有能解构的数据都需要),通过遍历殊勋获取对应的值进行赋值 Iterator的作用:为各种不同数据解构提供统一的访问接口,让数据的解构按照顺序处理,让for of可以遍历

7.遍历

(1)for in 在遍历数组时候取得的是index遍历对象时取的是对象的key( 缺点不仅会遍历对象上的属性还会遍历原型链上的属性,可以通过hasOwnProperty,不太适合遍历数组)

(2)for of 可以用来遍历数组可以触发break中断

8.Object

(1)Object.keys可以拿到对象key可以组成的数组

(2)Object.values可以拿到对象所有value组成的数组

(3)Object.entrys可以返回一个对象多有key和value组成的键值对的数组

(4)Object.getOwnProperty用户获取对象本身的属性

(5)Object.getOwnPropertyDescripter用户获取对象的属性的描述符,会生成一个对象,包括 configurable(可配置) writable(可书写) enumerable(可枚举属性)

Reflact就是相当于相当于是对Object方法的优化

(6)Object.assign是一种浅拷贝,用于合并对象,如果是相同属性会后面覆盖前面的值 跟{...obj1, ...obj2}用法类似

const newObj = Object.assign(obj1, obj2)

9.数组

(1)Array.flat将多维数组变成一维数组(arr, dep(深度))dep为Infinity的时候会将任何数组转为1维数组

简易的实现

function flatArray(arr, d = 1 ) {
 if(d > 0) {
   return arr.reduce((res,val)=>{
    if(Array.isArray(val)) {
      res = res.concat(flatArray(val, d-1))
    } else {
     res.concat(val)
    }
    return res
   }, [])
 } else {
   return arr.slice()
 }
}

(2)Array.icludes判断数组中存不存在结果返回true,false

(3)Array.from可以将伪数组转换为真数组