ES6 类
1.创建类
class Guan {}
2.利用类创建对象
new Guan3.类的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中类没有变量提升,所有必须先定义类,才能通过类实例化对象
es6中类没有变量提升,所有必须先定义类,才能通过类实例化对象
类里面的共有的属性和方法一定要加this使用
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)//undefinedconsole.log(that.y)//2} sing() { // 指的是实例化对象 console.log(this) } } let gsj = new Guan(1,2)