1: 创建一个person 类:
类里边有属性和方法:
class Person {
// 构造器方法
constructor( name, age ) {
// 构造器中 this 指向:(类的实例对象) 指向创建出来的对象,
// 为什么 this 指向的对象: new 关键字会在内存中开辟空间, 这个空间在设置值以后会交给p1 这个变量, 所以P1 就是创建出来对象的代理人, 而空间存在 “this”, 也就是指向p1;
this.name = name;
this.age = age;
}
// 除了构造器以外的方法: (一般方法)
speak() { // 说话的方法 ---- speak() 方法---> 放在了原型链上(类的原型上)
}
}
2: 创建一个student 类
class Student {
}
3: 创建一个Person 的实例对象
const p1 = new Person( “tom”, 18 );
const s1 = new Student( "tony", 19);
call 方法和 apply () 和 bind() 方法 都可以改变this 的指向问题。
类的继承: 创建一个Person 类
class Person {
constructor( name, age ) {
this.name = name;
this.age = age;
}
}
创建一个Student 类, 继承于Person 类
class Student extends Person {
}
const s1 = new Student ('小李', 15)
console.log(s1) student 已经继承了 Student 类
super: 方法帮你调父类构造器。 如果不使用父类方法, 就不要使用super 方法。
super() 必须在最开始调用, 如果放在其他的后边就会报错。
// 总结: 1: 类中的构造器不是必须要写的, 要对实例进行初始化操作的, 如添加指定属性时才写。
2: 如果A 类继承了B类, 且A类中写了构造器, 那么A类构造器中的super 是必须要调用的。
3: 类中所定义的方法, 都是放在了类的原型对象 上, 供实例去使用。