• 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){//做判断禁止赋值}}}

    --------学习 交流 提升-----------
  • 相关阅读:
    电位器的使用
    序言
    跨域之options请求详解
    redis config 实现切库 和指定序列化
    巨坑! druid1.1.0
    跨域问题解决
    canal解决缓存穿透 对数据库同步数据至redis 或EleasticSearch
    oauth2+spring security +jwt 完成分布式服务认证
    oauth2的数据库设计
    Gson 转换 Localdate 使用 GsonBuilder setDateFormat 无效
  • 原文地址:https://www.cnblogs.com/blogNYGJ/p/10460136.html
Copyright © 2020-2023  润新知