ES6的继承方式

125 阅读1分钟

结构:

--父类--

class创建一个类型{

	构造器(参数){
            属性:属性值
        }

	方法--会自动上传到构造函数的原型上
}

--继承--

class 子类名 extends 父类名{

	构造器(){
        
		super()//子类有构造器且使用this前,必须使用super()
	}
        
	方法
}

代码:

  /*---------父类----------------*/
        //class相当于es5构造函数中的function,用来定义类型
        class Person {
            constructor(name, age) {
                this.name = name
                this.age = age
            }
            //方法要写到构造器外,方法会上传到构造函数的原型对象上
            //es6中方法的简写
            say() {
                console.log('say');
            }
        }
        let per = new Person('rose', 12)
        console.log(per);

        /**----------子类--------------*/
        //子类也可以有自己的构造器和方法,但是构造器里必须先调用super方法
        //如果没有构造器,也会继承有父类的构造器和原型上的方法
        class Student extends Person {
            constructor(name, age, gender) {
                super(name, age)
                this.gender = gender
            }

            hello() {
                console.log('hello')
            }
        }


        //创建子类并调用方法
        let stu = new Student('jack', 12, '男')
        console.log(stu);
        stu.say()

es6的继承比es5的继承方便很多,但是在使用的时候也需要多注意下哦,特别是子类添加构造器时必须先调用super方法哦