简单写出es6常用的语法

1.let关键字

  1.不存在变量提升
  2.有块级作用域
  3.不能被重复声明
  4.没有添加到window,没有预解析,预处理

2.const关键字

  1.let有的属性特点const都有
  2.const变量之不能改变,(特别提示:数组和对象是存的地址,数组和对象的地址不能改变但是里面的值可以改变,所以不能重新赋值一个数组或对象)

3.解构赋值

1.对象的解构赋值(按属性名解构) 
2.数字的结构赋值(按顺序解构)
3.函数的参数可以用解构赋值

4.模板字符串(姓名:${person.name}
5.简化对象写法

const person={
  name,
  age,
  setName(value){
    this.name=value
  }
}

6.形参默认值

实参传了值,就用实参值,没有传就用形参默认值

7.call,bind,apply区别

1.他们都改变this指向
2.call,apply都是立即执行函数,aplly中第二个参数是数组形式,call是item1,item2...
3.bind不会立即执行
  1. …运算符 取代 arguments(伪数组)
  2. this指向
 1.普通函数直接调用        window
  2.普通函数调用obj.fn()    obj
  3.new fn()对象            实例对象
  4.fn.call/apply/bind(obj) obj
  5.箭头函数this:          指向离它最近的一个包裹函数的this,如果没有则指向window
  6.setTimeout              window
    事件绑定函数            绑定的dom对象

10.promise对象 (是一个异步编程解决方案,用来解决回调地狱问题)

   let promise = new Promise((resolve, reject) => {
     let xmlhttp=new XMLHttpRequest();
     xmlhttp.onreadystatechange=function(){
       if(xmlhttp.readyState === 4){
         if(xmlhttp.status === 200){
           resolve(xmlhttp.responseText)
         }else{
           reject('报错')
         }
       }
     };
     xmlhttp.open('GET',URL)
     xmlhttp.send()
   })
   promise.then((data)=>{
     console.log(data)
   },(error)=>{
     console.log(error)
   })

11.iterator

底层实现方法
function iteratorF(arr){
  let index=0;
  return {
    next:function(){
      return index<arr.length?{value:arr[index++],done:false}:{value:undefined,done:true}
    }
  }	
}

let arr=[1,4,6,9,'dd'];
let iteratorObj=iteratorF(arr);
console.log(iteratorObj.next())
console.log(iteratorObj.next())
console.log(iteratorObj.next())
console.log(iteratorObj.next())

将iterator接口部署到指定的数据类型上,可以使用for of去循环遍历(数组 字符串 arguments set容器 map容器 )

12.async函数:真正意义上去解决异步回调的问题

语法:async function fn(){
   await 异步操作
   await 异步操作
}

13.class(实例化使用属性和方法的时候遵循就近原则)

class Father{
  constructor(name,age){
  	this.name=name;
  	this.age=age;
  }
  money(){
    console.log(100)
  }
}
class Son extends Father{
  constructor(name,age,sex){
  	super(name,age); // 调用父类的构造函数 相当于继承父类的属性
  	this.sex=sex //子类自己的属性应放在super的后面写
  }
  money(){
    super.money(); //调用父类的普通函数
  }
}

你可能感兴趣的:(js)