zoukankan      html  css  js  c++  java
  • 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){//做判断禁止赋值}}}

    --------学习 交流 提升-----------
  • 相关阅读:
    Oracle 安装报错 [INS-06101] IP address of localhost could not be determined 解决方法输入日志标题
    Linux下安装oracle数据库提示DISPLAY not set. Please set the DISPLAY and try again。
    redhat 关机注销命令详解
    VirtualBox的四种网络连接方式
    修改RedHat的系统显示时间
    insufficient memory to configure kdump(没有足够的内存)解决方法(待验证、待解决)
    xen坑随笔 heartbeat dpkg垃圾数据库清除
    tomcat 监控脚本
    负载均衡随笔
    GIT命令介绍
  • 原文地址:https://www.cnblogs.com/blogNYGJ/p/10460136.html
Copyright © 2011-2022 走看看