ES6面向对象(class关键字,实例化,继承,构建实例,ESModule)

1.class关键字:定义类(构建实例) ->ES5中为构造函数

2.语法格式:

class Person{
    attr = val;  //实例属性
    static attr = val;  //静态属性
    #attr = val;  //私有属性
    constructor(x,f){
        //构造方法,必须要有,默认返回this
        this.x = x;  //实例属性
        this.f = f;  //实例方法 -- f的实参是一个函数
    }
    get attr(){return val;} //attr就是属性名
    set attr(val){}
    funName(){}  //原型方法
    static funName(){}  //静态方法
    #funName(){}  //私有方法
}
Object.assign(Person.prototype,{attr:val}); //原型属性

3.调用(实例化):new Person()

4.继承:

class Son extends Parent{
    constructor(){
        super();  //调用父类的构造函数,父类的参数作为super的参数
        this.x = 1; //必须先调用super再才能调用本身的this
    }
}

5.继承注意点:

1.子类可以不写constructor,但是写了constructor就必须先调用super()

2.可继承:实例属性及方法,原型属性及方法,静态属性及方法

3.不可继承:私有属性及方法

二、ESModule

JS模块化解决方案

1.CommonJS规范:JS模块的加载方案,同步加载,一般用在服务端 -- Node.js

2.AMD,CMD规范:JS模块的加载方案,异步加载,一般用在客户端 -- require.js,sea.js

以上模块加载方式为运行时加载,只有在运行时才能得到对象

3.ES6模块化,模块加载方式,既可用在服务端也可用在客户端 -- 编译时加载

4.一个文件就是一个模块

ES6模块化

1.export命令:规定模块的对外接口 -- 文件内的方法对外暴露的名字

1.对外暴露单个接口
export var varName = val;
export function foo(){};
​
2.对外暴露多个接口
export {name1,name2 as name3} //as:给name2取别名
​
注意:export对外导出必须同时导出变量名和值!

2.import命令:加载模块及对应接口

import {name1,name2 as name3} from "path/*.js";
​
注意:1.导入的接口名必须与导出的接口名一一对应
     2.文件加载的路径可以是绝对路径,也可以是相对路径--相对路径必须以/,./,../开头,如果都没有则需要配置文件
     3.多个相同的import只会执行一次

3.全部加载:

import * as name from "path/*.js";

4.默认导出:

export default val/function/class;
​
注意:1.一个模块只能有一个默认导出
     2.default相当于是默认导出的变量名,所以default后直接跟值即可

5.默认导入:

import name from "path/*.js"
​
注意:name就是默认导出的接口名字
  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小刘03

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值