ES6模块化

206 阅读3分钟

es6文档: caibaojian.com/es6/class.h…

一、Let const 二、变量的解构赋值 三、proxy。reflect nexttick docker

Es6可以看作

构造函数的另一种写法 class。 类的数据类型就是函数,类本身就指向构造函数 也可以直接对类使用 new命令

Promise实例

将多个promise实例包装成一个新的promise实例,成功的时候返回的是一个结果数组,失败的时候返回最先被reject失败状态的值。 Promse.all在处理多个异步处理时非常有用,比如说一个页面上需要等两个或多个ajax的数据回来以后才正常显示,在此之前只显示loading图标

promise.race: Promise.race([p1, p2, p3])里面哪个结果获得的快,就返回那个结果,不管结果本身是成功状态还是失败状态

模块化-Es6之类与继承

import: 使用export命令定义了模块的对外接口以后,其他 JS 文件就可以通过import命令加载这个模块。 export default命令为模块指定默认输出。

注意: export命令规定的是对外的接口,必须与模块内部的变量建立一一对应关系。

ES6模块化有以下限制:

1.变量必须声明后再使用

2.函数的参数不能有同名属性,否则报错

3.不能使用with语句

4.不能对只读属性赋值,否则报错

5.不能使用前缀 0 表示八进制数,否则报错

6.不能删除不可删除的属性,否则报错

7.不能删除变量delete prop,会报错,只能删除属性delete - global[prop]

8.eval不会在它的外层作用域引入变量

9.eval和arguments不能被重新赋值

10.arguments不会自动反映函数参数的变化

11.不能使用arguments.callee

12.不能使用arguments.caller

13.禁止this指向全局对象

14.不能使用fn.caller和fn.arguments获取函数调用的堆栈

15.增加了保留字(比如protected、static和interface)

优点:
1.减少命名冲突 2.避免引入时的层层依赖 3.可以提升执行效率

es6补充

const的使用 const在很多语言中已经存在了,比如C/C++中,主要的作用是将某个变量修饰为常量。 在JavaScript中也是如此,使用const修饰的标识符为常量,不可以再次赋值。 建议:在ES6开发中优先使用我们的const,只有需要我们的标识符的时候才使用let,使用const可以用来保证数据的安全性。 const作为常量,我们不能改它对内存的指向,但可以改它所指向的内存的值。 如果你觉得这样说你有点晕的话,来看看我们的练习。

1.注意一:一旦给const修饰的标识符被赋值之后,不能修改

// const name='why';
  // name='abc';

2.注意二:在使用const定义标识符,必须进行赋值 // const name; 3.注意三:常量的含义是指向的对象不能修改,但是可以改变对象内部的属性。

 const  obj={
    name:'imyanglan',
    age:18,
    gender:'女'
  }
  obj.name='imqingfen';
  obj.age='37';
  obj.gender='男';

//为什么这样赋值不会出错有问题? 因为这里是直接改的内存的值,而上面那个是改变内存的指向

1.熟悉的增强写法

const name='why';
  const age=18;
  const  height=1.88;

//ES6的增强写法

  const obj={
    name,
    age,
    height
  }

2.函数的增强写法 // ES5的写法

 // const obj={
  //   run:function () {
  //
  //   },
  //   eat:function () {
  //
  //   }
  //
  // }

// ES6的写法

 const obj={
    run(){
    },
    eat(){
    }
  }

es6的Map解析: (链接)

[https://juejin.cn/post/6844903881906847752]()

Set与其他数据结构的互相转换