美文网首页
es6常用语法

es6常用语法

作者: 何心猿意马 | 来源:发表于2018-03-28 21:55 被阅读0次

    什么是es6?

    • es ECMA Script ,javascript的语言标准,第6个大版本(2015年发布,也成为es2015)
    • 提升JS编写大型的复杂应用程序的能力
    • babel: es6 --> es5的转换器

    let,const

    • let 定义变量,const定义常量
    • 不能重复定义
    • 块级作用域内生效(var是在函数作用域)
    • 不存在变量提升

    箭头函数

    • 参数 => 表达式 / 语句
    // 箭头函数
    let value = 2;
    let double = x => x * 2;
    let treble = x => {
        return x * 3;
    }
    console.log("double:"+double(value)); // double:4
    console.log("treble:"+treble(value)); // treble:6
    
    • 没有自己的this 指针,继承外层作用域
    var obj = {
        commonFn: function () {
            console.log(this);
        },
        arrowFn: () => {
            console.log(this);
        }
    }
    console.log(obj.commonFn()); // this 指向是他的调用者 obj
    console.log(obj.arrowFn()); //  arrowFn 和 obj 共享一个作用域 ,this 指向了obj所在的作用域window
    
    • 不能用作构造函数 ( 不能用new)
    let Animal = function (){
    
    }
    let anmial = new Animal()
    
    let Animal = function (){
    
    }
    let anmial = new Animal()
    
    • 没有prototype属性

    模板字符串

    • 反引号标识 ``
    • 支持多行字符串
    • 支持变量和表达式
    // 
    let name = "hello";
    let getName = ()=>{
        return 'dsfderek';
    }
    let nums = [1,2,3,4,5];
    let str = `
    <div>
        <h1 class="h1">${name} - ${getName()}</h1>
    </div>
    <ul>
        ${
            nums.map(n=>`<li>数字 ${n}</li>`).join('')
        }
    </ul>
    `;
    document.querySelector('body').innerHTML = str;
    
    

    Promise

    • promise 对象
    • resolve,reject,then
    new Promise((resolve,reject)=>{
        // 异步函数
        $.ajax({
            url:'',
            type:'post',
            succes(res){
                resolve(res);
            },
            error(err){
                reject(err);
            }
        })
    }).then((res)=>{
        console.log(res);
    },(err)=>{
        console.log(err);
    });
    
    
    
    // 链式操作
    let promiseFn1 = new Promise((resolve,reject)=>{
        // 异步函数
        $.ajax({
            url:'',
            type:'post',
            succes(res){
                resolve(res);
            },
            error(err){
                reject(err);
            }
        })
    })
    let promiseFn2 = new Promise(()=>{
        // 异步函数
        $.ajax({
            url:'',
            type:'post',
            succes(res){
                resolve(res);
            },
            error(err){
                reject(err);
            }
        })
    })
    
    promiseFn1.then(()=>{ // promiseFn1的then
        return promiseFn2;
    }).then(()=>{  // promiseFn2的then
        // promiseFn2的返回
    })
    

    面向对象- 类

    • class
    • 语法糖,对应 function
    • 构造函数,constructor 初始化该类的对象
    class Animal{
        constructor(name){
            this.name = name
    
        }
        getName(){
            return this.name;
        }
    }
    // 实例
    let animal = new Animal("dsfderek");
    console.log(animal.getName());
    
    

    面向对象-类的继承

    • extends 类的继承
    • super 调用父类的构造函数 ,子类是没有this的,想在子类里调用父类的方法,调用super方法,把父类的this对象继承过来,在子类通过this操作父类的属性和方法
    // 类的继承
    class Animal{
        constructor(){
            this.name = "dsfderek"
    
        }
        getName(){
            return this.name;
        }
    }
    class Cat extends Animal{
        constructor(){
            super();
            this.name = "cat"
        }
    }
    let animal = new Animal();
    let cat = new Cat();
    console.log(animal.getName());
    console.log(cat.getName());
    
    

    面向对象-对象

    • 对象里属性的简写
    • 对象里方法的简写
    • 属性名可以为表达式
    let name = "dsfderek",
        age = 18;
    
    let obj = {
        // 变量名可以直接用作对象的属性名
        name,
        age,
        // 对象里的方法可以简写
        getName(){
            return this.name;
        },
        // 表达式作为属性名或方法名
        ['get' + 'Age'](){
            return this.age;
        }
    }
    

    Object 扩展

    Object.keys(obj) // 一个对象里所有的属性名,结果是一个数组
    Object.assign({a:1},{b:2}); //合并对象,后面的覆盖前面的
    

    ES6 模块化

    • 解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程
    • CommonJs,AMD,CMD
    • export,import
    let str = 'string';
    let obj = {
        name : 'dsfderek'
    }
    let fn = ()=>{
        console.log('module test');
    }
    
    export {
        str,
        obj,
        fn
    }
    
    export default {a:1};
    
    
    
    import {str as string,obj,fn} from './module.js'
    import foo from './module.js'
    console.log('name:',obj.name);
    // console.log('str:',str);
    console.log('string:',string);
    console.log('fn:',fn);
    
    
    console.log(foo);
    
    
    

    ·

    相关文章

      网友评论

          本文标题:es6常用语法

          本文链接:https://www.haomeiwen.com/subject/wooycftx.html