1.class中的静态方法、静态属性以及实例方法、实例属性
注:class中只能写构造器,静态方法、实例方法、静态属性,不能写其他的代码
class Animal {
constructor(name,age){ //构造器,相当于构造函数,可以接受new的时候传进来的参数
this.name = name //实例属性
this.age = age //实例属性
}
see () {
console.log('我是实例方法')
}
static info = '哈哈' //静态属性,用static关键字来修饰,用了static之后不需要用var这个来声明变量
static show () { // 静态方法
console.log('我是静态方法')
}
}
//通过new出来的实例才能访问实例属性和方法
var a = new Animal('小猫',12)
console.log(a.name) //访问实例属性
a.see() //调用实例方法、
// 通过类名来访问静态属性和方法
console.log(Animal.info) // 访问静态属性
Animal.show() // 调用静态方法
2.class的extends关键字
// 父类,就是将一个共同的属性、或者方法写在父类中,跟函数的功能差不过,精简代码
class Person {
constructor(name,age) {
this.name = name
this.age =age
}
say(name) {
console.log('我是'+name+'人')
}
}
class American extends Person{
//当子类没有构造器的时候,可以不用调用super(),会默认把父类的构造器当作子类的构造器
}
class Chinese extends Person {
//当子类要重写构造器的时候,需要调用一下super():即调用父类的构造器。如果需要用父类的实例属性,就要传值
constructor(name,age,id){
super(name,age)
// 声明实例属性要在调用super()之后,否则就会报错
this.id = id
}
}
var a = new American('托马斯',18)
var c = new Chinese('胡八一',31,'440881200002091031')
a.say('美国人')
console.log(a)
console.log(c)