zoukankan      html  css  js  c++  java
  • es6 随便记一哈

    13 class和module

      ①export和import

      profile.js

    export var firstName = 'David';
    export var lastName = 'Belle';
    export var year = 1973;
    
    //等价于
    var firstName = 'David';
    var lastName = 'Belle';
    var year = 1973;
    export { firstName , lastName , year}
    

      引用

    import {firstName, year} from './profile'
    

     ②给export的属性或方法使用默认名称: 

    export default function foo() { console.log('foo')}
    

      引用

    import xx from './export-default.js';
    xx();// 'foo'
    

      ③模块继承

       circleplus.js

    export * from 'circle';// 输出circle模块所有属性方法
    export default ...
    export { xx } from 'circle'

      main.js

    module math from 'circleplus';
    
    import exp from 'circleplus';// 默认方法命名为exp
    

      而ES6模块输出的是值的引用

    // lib.js
    export let counter = 3;
    export function incCounter() {
      counter++;
    }
    
    // main.js
    import { counter, incCounter } from './lib';
    console.log(counter); // 3
    incCounter();
    console.log(counter); // 4
    

    12 promise

      基本用法

    var promise = new Promise(function(resolve, reject){
       if(//成功)  resolve(value);
       else         reject(error) ;
    })
    
    promise.then( 
        function(value){// success} ,  
        function(value){ // failure}
    ) ;                       
    

      链式操作:返回新的Promise对象,后一个回调函数等待它有了结果,才进一步调用

      catch是then(null,rejection)的别名,“冒泡”向后传递直至被捕获

    xx.then(  //dsf ).then( //xxx ).catch(
        error => {console.log(error);}
    );
    

      Promise.all(promises).then(//xx).catch(//xxx)将多个异步操作或者Promise对象包装秤一个新的Promise对象,等所有执行完成后,该对象fuflled

      Promise.resolve将对象转换为Promise对象,如果参数不具有then方法,新Promise对象状态为resolved

      async function xx(){//xxx}表示函数体内有异步操作,会先返回等待异步执行完毕,继续执行体内剩下的操作

    11 generator函数

      就是一个普通函数,但是包含一个内部状态遍历器,可以依次遍历状态。特征是function*后面跟着一个*号,用yield语句定义不同状态,或者说不同成员

      

    function* hello(){
      yield 'hello';
      yield 'world';
      return 'ending'  ;  
    }
    

      

    var a = new hello();
    a.next().next().next()
    

      应用

    function* loadUI() {
       showLoadingScreen();
       yield loadUIDataAsynchronously() ;
       hideLoadingScreen();   
    }
    
    var loader = loadUI();
    loader.next();// 加载UI
    loader.next();// 卸载UI
    

      yield*语句,语法表明它返回一个遍历器

    let delegatedIterator = (function* () {
       yield 'hello' ;
       yield 'bye'' 
    }());
    let delegatingIterator = (function* () {
      yield 'before;'
           yield*   delegatedIterator;
      yield 'after';
    }())
    for(let value of delegatingIterator ) {
      console.log(value)  ;
    }
    

      还有遍历完全二叉树

    10 Iterator和for of循环

      部署了next()方法的对象,就有了遍历器功能,next方法包含value,done两个属性的对象

    function makeIterator(array) {
      var nextIndex = 0;
    
      return {
        next: function(){
          return nextIndex < array.length ?
             {value: array[nextIndex++], done:false} :
             {value: undefined, done:true}
    }  
    }  
    }
    

      for in获取键名,for of获取键值

    9 set和map

      Set()唯一不重复的数组,add delete has clear

      Map(),js对象只能用字符串做键,Map可以用字符串、对象做键;set(k, v)

     WeakMap() 只接受对象作为键名,键对应的对象未来可能消失,防止内存泄漏

    8 函数扩展

      默认值; 。。。; =》 

    7 对象扩展

      Object.is()   assgn(target, source1...)

      可以表达式作为对象键,要把表达式放在方括号内

    var a = 'xdfs';
    var obj = {
        "ddf"  : "asdf",
        [a] : "sdfdfd"
    }
    

      Symbol()类型,独一无二不相等

      Proxy()拦截,可以类似于AOP做拦截器

           Object.observe(obj, observeFunction);

    全部来自于阮一峰ECMAScript6入门

  • 相关阅读:
    JavaScript脚本学习
    PE文件结构 (转贴)
    Squid 代理服务器 编译源码 伪造HTTP_X_FORWARDED_FOR 请求头
    设置win2003远程桌面允许2个以上会话
    2003远程桌面声音问题
    AS3正则表达式
    Visual Studio技巧之打造拥有自己标识的代码模板
    如何重建sql数据库索引
    多线程系列(转)
    时间差
  • 原文地址:https://www.cnblogs.com/tabCtrlShift/p/9236737.html
Copyright © 2011-2022 走看看