开发者学堂课程【React 入门与实战:class-为子类挂载独有的实例属性和实例方法】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/585/detail/8100
class-为子类挂载独有的实例属性和实例方法
一、为子类挂载独有的实例属性和方法
class Person{
constructor(name,age){
this.name = name
this.age = age
}
sayHello(){
console.log(‘
大家好’)
}
}
class American extends Person{
constructor(name,age){
//问题1:为什么一定要在 constructor 中调用 super
//答案:因为如果一个子类,通过 extends 关键字继承了父类。那么在子类constructor 构造函数中,必须优先调用 super()
//问题2:super 是什么东西?
//答案:super 是一个函数,而且它是父类的构造器,子类中的 super 其实就是父类中,constructor 构造器的一个引用
//问题3:为什么调用了 super 之后,a1 实例的 name 和 age 都变成了 undefined 了?
super(name,age)
}
}
const a1 = new American(‘Jack’,20)
console.log(a1)
a1.sayHello()
class Chinese extends Person{
//name姓名
//age 年龄
//IDNumber 身份证号 【中国人独有】 既然是独有的,就不适合挂载到父类
constructor(name,age, IDNumber){
//语法规范,在子类中,this 只能放到 super 之后使用
this.IDNumber = IDNumber
super(name,age)
}
}
const c1 = new American(‘
张三’,20,’130428*******’)
console.log(c1)
c1.sayHello()
实例属性:是通过 new 出来的实例访问到的属性
class Animal{
//类中的构造器
constructor (name,age)
{
this.name=name; //
实例属性
this.age=age; //
实例属性
}
}
console.log(a1.name)
console.log(a1.age)
实例方法:挂载到原型对象 prototype 上的方法
function Person(name,age)
{
this.name=name;
this.age=age;
}
//实例方法
Person.prototype.speak=function()
{
console.log("Person
的实例方法")
}
p1.speak();
实例方法在调用时 通过创建出的对象调用