复习
声明类、类的实例化、继承
//声明类,关键字为class
class Person{
constructor(name,age){
// 传进来的变量绑定在类的属性上
this.name = name
this.age = age
}
sayhello(){
console.log(`${this.name}`);
}
}
// 实例化
let zhangsan = new Person ('zhangsan',18)
console.log(zhangsan.name); //调用类的属性
console.log(zhangsan.age);
zhangsan.sayhello()
//控制台
zhangsan
18
zhangsan
继承
class Person{
constructor(name,age){
// 传进来的变量绑定在类的属性上
this.name = name
this.age = age
}
sayhello(){
console.log(`${this.name}`);
}
}
//有了父类的方法和属性了
class Student extends Person{
constructor(name,age,sex){
super(name,age); //把父类的contructor执行一遍
this.sex =sex
}
learn(){
console.log(`我是吕佳美,性别:${this.sex}`);
}
}
// 实例化
// 实例化
const lvjiamei = new Student ('zhangsan',18,'女')
console.log(lvjiamei.name); //调用类的属性
console.log(lvjiamei.age);
console.log(lvjiamei instanceof Student);
console.log(lvjiamei instanceof Person);
console.log(lvjiamei instanceof Object); //判断是否在一个原型链上
console.log(lvjiamei.__proto__);
console.log(Student.prototype);
console.log(lvjiamei.__pro__ ==Student.prototype) //true 说明在一个链上
instanceof的作用(判断继承关系,同一条原型链返回true)
每一个class都有prototype,每个实例都有__proto__,它两指向class的prototype
prototype里面存储对象的方法
原型的执行规则:
现从自身上的属性h和方法中查找
如果找不到,去_proto_上查找
原型链:多个原型连接起来
原型链
获取对象属性时,如果对象本身没有这个属性,那就会去他的原型__proto__
上去找,如果还查不到,就去找原型的原型,一直找到最顶层(Object.prototype
)为止。Object.prototype对象也有__proto__属性值为null。