ES6新特性学习

ES6中的新特性主要包括定义变量、立即执行函数、生效的注释、参数默认值指定、可变参数、代理对象

解构赋值、模板字符串、正则扩展、数字扩展、set和Map、函数扩展、对象扩展、Iterator、Generator、Symbol、Module、Class

1.变量定义

  es5中 var 定义一切变量,定义常量需要Object.defineProperty(window,''PI',{value:3.1415926,writble:false})

  es6中 let定义的变量在代码块中生效,const定义常量,如const PI=3.1415926

2.关于闭包的理解

  闭包应该是在一个函数体内返回了另一个函数体,父函数被调用时才会返回子函数,此时子函数的入参才会赋值。

3.立即执行函数 

  es6中用{}代替,可以起到代码隔离的作用,可以在{}中定义相同的常量,也不会报错。

4.注释的生效

  如vscode启动插件eslint,就会对代码进行校验,添加注释/* eslint-disable*/就会使插件校验失效。

5.参数默认值得指定

  es5中需要在函数体内判断入参再赋值,es6写法更简单 function f(x,y=7,z=42){}

  es6还可以在此处做参数校验function f(x=check(),y=7){}

6.可变参数

  当不知道有多少个入参时,可以使用可变参数...扩展运算符,function f(...a){}

7.代理对象  

  需要保护data对象中的sex属性,不被修改时,各版本的做法:

es3:var person=function(){

  var data={name:“yx”,sex:“man”};

  this.get=function(){return data[key]};

this.set=function(key,value){ //做判断禁止赋值}

}     

//实例化person,data并没有绑定到person上,所以不能被外部访问到,给person增加get方法可以得到data数据。     

// 调用person.get()()会先构建person函数对象,该函数持有一个data对象,并提供一个访问data对象的方法。

es5:var data={name:“yx”,sex:“man”}; object.defineProperty(data,sex,{value:'man',writle:false}) // 实现sex属性

es6:let person={name:'yx,sex:"man"} ;  let person=new Proxy{person,{get(target,key){return target[key]},set(target,key,value){//做判断禁止赋值}}}

--------学习 交流 提升-----------
原文地址:https://www.cnblogs.com/blogNYGJ/p/10460136.html