手记

【金秋打卡】第12天 再学JavaScript ES(6-10)全版本语法大全

课程名称:再学JavaScript ES(6-10)全版本语法大全
课程章节:2-16 Sub Classes(如何继承一个类?)
课程讲师:快乐动起来呀
课程内容:

面向对象语言特点:继承、封装、多态,子类继承父类,父类有的属性和方法,子类也会有
面向对象的之所以强大就是因为有继承,继承就是父亲有的可以给继承给儿子,即Dog子类什么也不干,也会继承父类Animal所有有的方法和属性

ES5做法:通过原型链

Dog.prototype = Animal.prototype;

父类

let Animal = function(type){
    this.type = type
}

子类

let Dog = function(){
    //初始化父类的构造函数
    Animal.call(this, 'dog') 
}

Dog.prototype = Animal.prototype 

Animal的实例对象this指向dog未来的实例对象上去,只能把在Animal构造函数里的属性和方法继承过来,在Animal原型链上的继承不了
原型对象的指向指向同一个地方,值并没有发生复制。可以把Animal原型链上的方法继承过来
要继承父类原型链上的方法,需要把子类的原型链挂载到父类的原型链上

ES6做法:

class Dog extends Animal {}

class Dog extends Animal {

    constructor(type){

        super('dog') //初始化父类的构造函数 == Animal.call(this, 'dog')

        this.age = 2;  //如果子类没有自己的属性 可以省略constructor全部

    }

}

课程收获:
es6中子类继承父类,如果不写构造函数,默认调用了父类的构造函数class Dog extends Animal{}
如果写构造函数,必须使用super()调用父类的构造函数
如果父类有参数,子类构造函数也要有参数

0人推荐
随时随地看视频
慕课网APP