欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

es6中类的使用

程序员文章站 2022-07-16 21:53:36
...

当类中没有constructor时,自动生成constructor

class Star{
    constructor(name,age){
        this.name = name;
        this.age = age;
    }
}
let a = new Star('aaa',18)
console.log(a)
//Star {name: "aaa", age: 18}

在类中添加方法

class Star{
    constructor(name,age){
        this.name = name;
        this.age = age;
    }
    sing(song){
    	console.log('let me sing'+song);
    }       
}

类的继承

class Father{
    constructor(){
        
    }
    money(){
        console.log(100)
    }
}
class Son extends Father{
    
}
let son = new Son()
//100

super关键字调用父类构造函数

class Father{
    constructor(x,y){
        this.x = x;
        this.y = y;
    }
    sum(){
		console.log(this.x + this.y);
    }
}
class Son extends Father{
    constructor(x,y){
        super(x,y)//调用父类中的构造函数
    }
}
let son = new Son(1,2)
son.sum() // 3

super调用父类普通函数

class Father{
    say(){
        return 'I am father'
    }
}
class Son extends Father{
    say(){
        //return 'I am son'
        console.log(super.say())
    }
}
let son = new Son()
son.say() // I am father

调用方法时,遵循继承中的就近原则,优先子类中的方法,如果子类中没有,则调用父类中的方法

子类继承父类方法 同时拓展减法

class Father{
    constructor(x,y){
        this.x = x;
        this.y = y;
    }
    sum(){
        console.log(this.x + this.y);
    }
}
class Son extends Father{
    constructor(x,y){
        //调用父类中的构造函数
        //必须先调用父类的构造函数
        super(x,y);
        this.x = x;
        this.y = y;

    }
    subtract(){
        console.log(this.x - this.y);
    }
}
let son = new Son(5,3)
son.subtract() // 2
son.sum() // 8

注意:

es6中类没有变量提升,所以必须先定义类,再使用类实例化对象。
类里面的共有属性和方法,必须加this使用
constructor 里面的this 指向实例对象,方法里面的this指向这个方法的调用者