zoukankan      html  css  js  c++  java
  • 10.1 ES6 的新增特性以及简单语法

    ES6 的新增特性以及简单语法 

    • let 和 const
    • 模板字符串
    • 箭头函数
    • 对象单体模式
    • es6面向对象
    • 模块化

     let 和 const

      之前一直用 var 来声明变量,ES6 新增 let 和 const

    script type="text/javascript">
    
        // let声明变量块级作用域,不能重复声明
        // let声明的变量 是块级作用域,不能重复声明
        // {
        //     // let a = 12;
        //     let a  = 12;
        //     let a  = 13;
        // }
       
        // console.log(a);
        
       // var 的坑 ,循环的时候会按照最后一次的赋值
        // var a = [];
        // for (var i = 0; i < 10; i++) {    //这里的 var i 换成 let i 即可解决
        //  a[i] = function () {
        //     console.log(i);
        // };
        // }
        // a[6](); // var 10 ,let 6
        
        // var 会发生变量提升
        console.log(foo); // 输出undefined
        var foo = 2;
        // let  不发生变量提升 
        console.log(foo); // 报错 ReferenceError
        let foo = 2;
    
        // const 声明常量,一旦声明,立即初始化,不能重复声明。
        const foo; // 没立即赋值,会报错
        // const 声明是只读常量,不可更改
        const P = 1
        P = 2 // 报错无法更改
    </script>

    模板字符串

      更加的简单的拼接字符串 用 ${} 来填入

    <script>
        var a = 1;
        var b = 2;
    
        // var str = "哈哈哈哈" + a + "嘿嘿嘿" + b;
        // ` xxx${}xxxx${}xxx`  注意反引号 
        var str = `哈哈哈哈${a}嘿嘿嘿${b}`;     
        console.log(str);
    </script>

     箭头函数

      操作更加简单了,但是改变了特性造成了不便

    <script>
        // function(){} --等同于--- ()=>{}
    
        // 1.this的指向发生改变,指向了定义对象时的对象
                // function(){} 的时候相当于 self 
                // ()=>{} 的时候相当于 windows对象
        // 2.arguments不能使用,无法再通过 arguments 拿所有的参数
        var person = {
            name:'张三',
            age: 18,
           
            fav:()=>{ 
                console.log(this);     // windows
                console.log(arguments);  // 报错不存在 
                } 
              } 
              person.fav();
    </script>

     对象单体模式

      为了解决箭头函数的问题

      (){} 完全等同于 function(){} 不再有上面的困扰了

    <script>
        var person = {
            name:'张三',
            age: 18,
           
            fav(){
                console.log(this);
                console.log(arguments);
            }
        }
        person.fav();
    </script>

     ES6的面向对象

    <script>
        // 构造函数的方式创建对象
        //  function Animal(name,age){
        //      this.name = name;
        //      this.age = age;
            
        //  }
        //  Animal.prototype.showName = function(){
        //      console.log(this.name);
        //  }
        //  Animal.prototype.showName2 = function(){
        //      console.log(this.name);
        //  }
        //  Animal.prototype.showName3 = function(){
        //      console.log(this.name);
        //  }
        //  Animal.prototype.showName4 = function(){
        //      console.log(this.name);
        //  }
        //  var dog = new Animal('日天',18)
    
    
    
        class Animal{
            constructor(name,age){ //  必须要 constructor 初始化属性 类似于 init 
                this.name = name;
                this.age = age;
            }  // 这一行一定不要加逗号
            showName(){
                console.log(this.name)
            }
        }
        var d = new Animal('张三',19);
        d.showName();
    </script>
  • 相关阅读:
    bzoj2876 [Noi2012]骑行川藏
    关于线性基的一些理解
    bzoj2115 [Wc2011] Xor
    bzoj2884 albus就是要第一个出场
    bzoj2460 [BeiJing2011]元素
    bzoj2005 [Noi2010]能量采集
    关于积性函数的一些理解
    bzoj4300 绝世好题
    Servlet—文件上传
    JNDI—目录接口名
  • 原文地址:https://www.cnblogs.com/shijieli/p/10231371.html
Copyright © 2011-2022 走看看