在面向对象中,一定要把公用以及父级自己要用的属性和方法封装在父对象的内部
当子对象需要公用属性或方法时,可以直接从父对象中继承
配合arguments
,根据传入的参数不同,执行不同的函数体
一个类数组对象,包含所有传入的参数,是实现重载的一种工具
父对象构造出来的属性和方法,都可以在子对象中重新定义
例如
class Parent {
constructor(age){
this.name = 'mary'
this.age = age
}
say(){
console.log('我是公用方法')
}
intro(){
console.log(`my name is ${this.name},my age ${this.age}`)
}
}
class Son extends Parent {
constructor(height){
super()
this.height = height
}
intro(){
console.log(`my name is ${this.name},my height ${this.height}`)
}
}
let son = new Son(60)
son.say() // 我是公用方法
son.intro() // my name is mary,my height 60
上述代码中,有一个父类Parent
,里面两个属性name
和age
,以及两个方法say()
和intro()
。
一个子类Son
继承父类Parent
,并且有一个自有属性height
,已经一个和父类中同名的方法intro
。
这种把属性和方法写进同一个类中的方式,就称为封装
。
而子类本身没有say()方法
却可以直接使用父类中的say()方法
,没有name属性
却可以使用父类中的name属性
,就称为继承
。
而子类自有的intro方法
和父类中的intro方法
重名,最终却采用的是自身的方法,就称为多态
。
而arguments,就可以当作实现重载的一种工具使用,例如可以根据arguments的长度,也就是根据传入参数的长度,执行不同的方法等。