一、类
ES6 的class可以看作只是⼀个语法糖,它的绝⼤部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰、更像⾯向对象编程的语法⽽已。
1.构造函数:constructor()⽅法是类的默认⽅法,通过new命令⽣成对象实例时,⾃动调⽤该⽅法。⼀个类必须有constructor()⽅法,如果没有显式定义,⼀个空的constructor()⽅法会被默认添加。
function Animal (name,age){
this.name = name;
this.age = age
}
Animal.prototype.sayHello = function(){
console.log('hello')
}
let a = new Animal('tom',2)
2.成员属性:成员属性是直接定义在类中的属性,我们可以为其赋默认值,如果没有指定默认值,默认值为undefined
3.成员⽅法:成员⽅法是直接定义在类中的⽅法,例如上⾯例⼦中的toString⽅法,从ES5⻆度理解,成员⽅法就是定义在构造函数原型中的⽅法,供所有实例共享的⽅法。
4.静态⽅法:静态⽅法是定义在类上的⽅法,可以通过类名直接调⽤的⽅法
5.静态属性:静态属性是定义在类上的属性,可以通过类名直接调⽤的属性
6.静态代码块:⽤于初始化静态属性的代码区域,在ES2022中引⼊静态块(nodev14⽆法使⽤)静态代码块⽤于初始化静态属性的代码区域,在ES2022中引⼊静态块(nodev14⽆法使⽤)
//类是构造函数的语法糖
class Animal {
//一个类必须有一个constructor
constructor(name,age){
this.name = name;
this.age = age
}
//成员方法
sayHello(){
console.log('hello my name is'+this.name);
}
//成员属性
gender=12
//静态方法
static sayAge(age){
console.log('I am'+ age);
}
//静态属性
static gender = '男'
}
let a = new Animal('jerry',2) //a为Animal的实例对象
console.log(a); //{}
a.sayHello() //my name is jerry
console.log(a.gender);
Animal.sayAge(13)
console.log(Animal.gender);
二、继承
(1)原型链继承
function animal (){}
function Dog (){}
Dog.prototype = new Animal()
(2)经典继承(借用构造函数)
function(){
Animal.call(this,'tom')
}
(3)组合继承
类
//父类
class Animal {
sayHello(){
console.log('Hello')
}
}
//子类
class Dog extends Animal {
constructor(){
super()
}
}
let d = new Dog();
console.log(d); //Hello
三、axios(纯粹的http库)
jquery ajax基于回调函数
axios 基于promise的http库(专业),既能在浏览器上使用,又能在nodejs上面使用
拦截操作
响应拦截(在拿到响应信息之前干一个事情)
请求拦截(请求发送之前干一个事情)
(1)使用
安装
cdn <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>(浏览器)
npm(cnpm yarn)
npm install axios --save(nodejs)