第二节 面向对象与闭包

ES6(ECMA 2015)

ES7(ECMA 2016)

  • **求幂
  • Array.includes()

ES8(ECMA 2017)

  • await/async

ES9(ECMA 2018)

  • rest/spread(用来替代await/async)
  • 异步迭代
  • Promise.finally()
  • 正则

兼容性 babel:

1、在线 (不推荐)
type="text/babel"
2、编译
node.js【先安装】
npm i @babel/core @babel/cli @babel/preset-env
添加脚本
添加.babelrc——声明preset

面向对象

机器语言->汇编->低级语言(面向过程)->高级语言(面向对象c,java…)->
模块->框架->API

面向对象:
  • 封装性
  • 继承性
  • 多态性

ES6的标准化

class 申明类
constructor 申明构造器
extends 继承
super 父类(超类)

class xxx{        
    constructor(){};
    show(){};
}

当从父类继承:

class xxx extends xx{       
    constructor(){
        super();
    };
    show(){};
}

闭包

1、底层:栈
2、高层:函数当作对象处理
GC(垃圾回收)
闭包——留着别删

ES6的模块化

没有模块 -> CMD -> AMD -> ES6语言提供的模块化支持
ES6的模块化 -> webpack -> 浏览器还不支持
webpack(打包)用来编译ES6
webpack编译
1、entry—入口地址
2、output—输出
- path:绝对路径
- filename:文件名
3、mode—模式
4、所有当前路径前面加./
过程:
1、写一个模块mod1.js

   export let a=12;   //export导出

2、ES6的模块化:建立index.js

   import * as mod1 from './mod1';   //import导入mod1中的*所有文件,打包为mod1
   alert(mod1,a);

3、为了兼容,用到webpack编译:webpack_config.js (后面还会再讲)

   const path=require('path');
   
   module.exports={
      mode:'production',
      entry:'./index.js',
      output:{
         path:path.resolve(__dirname,'bulid'),
         filename:'bundle.js',
       }
   };

export

export let a=xx;
export const a=xx;
export {xx,xx,xx};
export function xx{};  
export class xx{};
export default xx;  //(最常用)
export * from './m2';   //从另一个模块导出
export {x,x,x,x} from './m2';

import

import * as mod from './xxx';
import {a,b,c,…} from './xxx';
import xxx from './mod';    //引入默认成员  (最常用)
import './1.css';     //模块的代码引入进来,不引入内部成员
let Promise=import"./xxx"; //异步引入

你可能感兴趣的:(第二节 面向对象与闭包)