1.创建类 

class Guan {}


2.利用类创建对象
new Guan
3.类的constructor 构造函数
constructor() 方法是类的构造函数(默认方法),用于传递参数,返回实例对象,通过new命令生成对象实例时,自动调用该方法。如果没有显示定义,类内部会自动给我们创建一个constructor()
class Guan {
    constructor(name) {
        this.name = name // 自动调用并return
    }
}
let gsj = new Guan('关首静')

console.log(gsj.name) // 关首静
类中添加方法
 constructor(name) {  // constructor构造器或者构造函数
        this.name = name
    }
    say () {
        console.log(this.name  + 'n你好')
    }
}
let gsj = new Guan('关首静')

// console.log(gsj.name)
gsj.say()
类的继承
super 关键字
super关键字用于访问和调用对象上父类上的函数。可以调用父类的构造函数,也可以调用父类的普通函数。
注意:子类构造函数中使用super,必须放到this前面(必须先调用父类的构造函数方法,在使用子类构造方法)
  es6中类没有变量提升,所有必须先定义类,才能通过类实例化对象
 类里面的共有的属性和方法一定要加this使用
this 是属于实例对象的
class Guan {
    constructor(x,y) {  // constructor构造器或者构造函数
        this.x = x
        this.y = y
                this.say()
    }
    say () {
        console.log(this.x + this.y)
    }
}
class Kong extends Guan{
    constructor(x,y) {
        super(x,y) //调用了父类中的 构造函数并把参数传递给父类的constructor
                this.x = x
                this.y = y
    }
}
let son = new Kong(1,2)
son.say()

类里面的this 指向问题
1.constructor 里面的this指向实例化对象,方法里面的this指向这个方法的调用者
var that 
class Guan {
    constructor(x,y) {  // constructor构造器或者构造函数
        that = this  // that 里面存储的是constructor 里面的this
        this.x = x
        this.y = y
        this.btn = document.querySelector('button')
        this.btn.onclick = this.say
        this.sing()
    }
    say () {
        // 这个this指向的是btn这个按钮,因为这个按钮调用了这个函数
        console.log(this.y)//undefined
                console.log(that.y)//2
    }     sing() {         // 指的是实例化对象         console.log(this)     } } let gsj = new Guan(1,2)