什么是javaScript类,其实就是构造函数的语法糖。
//早期定义一个类
function From (from, to) {
//为新对象定义from和to两个状态
//this指向生成的新对象
this.from = from;
this.to = to;
}
//给构造函数定义方法,这些方法写在prototype上,可以让新对象继承(这相当于重写了From的原型对象)
From.prototype = {
include() {
return from > to ? console.log(`${from} 大于 ${to}`) : console.log(`${from} 小于等于 ${to}`);
}
}
var newFrom = new From(0, 10);
console.log(newFrom.from, newFrom.to); //=>0, 10
console.log(newFrom.include());//=> 0 小于等于 10
这是早期定义一个类的基本方法,es6定义了class关键字,可以用来声名一个javaScript类。
//用class定义一个类
class Person{
//这个构造函数会在实例化Person类时执行。
constructor(name, age){
this.names = names;
rhis.age = age;
};
//这是添加在构造函数的原型对象身上的方法
add() {
console.log("running_yong");
}
}
类的继承,用extends关键字
class Teacher {
learn(){console.log("学习的方法")}
}
class Students extends Teacher {
//只要继承语法写了,就得在构造函数里执行超类super
constructor(){
super();
}
}
let student = new Stidents();
student.learn();
这段代码会在控制台打印"学习方法",这说明Stidents类继承了Teacher,这才可以使用Teacher原型中的方法。类中还有静态方法,需要用static修饰。它只供类自己使用。
class Utils {
static add() {
console.log("running_yong")
}
};
let utils = new Utils();
//访问不到,只有Utils.add才可以访问到add方法。
utils.add();