ES6中的类,class 讲解

类和对象

//创建 class 类
class Star {
	constructor(uname, age) {	//constructor里面的this指向的是创建的实例对象
		this.uname = uname;
		this.age = age;
	}
	sing(song){
		console.log(this.uname + song)
	}
}

// 利用 类 创建对象 new
var ldh = new Star('刘德华', 18);
var zxy = new Star('张学友', 20);

console.log(ldh.uname,ldh.age) 		//刘德华 18
console.log(zxy.uname, zxy.age) 	//张学友 20
ldh.sing('天若有情')		// 刘德华天若有情
(1)通过class关键字创建类,类名我们还是习惯性定义首字母大写
(2)类里面有个 constructor函数,可以接受传递过来的参数,同时返回实例对象
(3) constructor函数只要new生成实例时,就会自动调用这个函数,如果我们不写这个函数,类也会自动生成这个函数
(4)生成实例new不能省略
(5)最后注意语法规范,创建类类名后面不要加小括号,生成实例类名后面加小括号,构造函数不需要加 function


类的继承

class Father {
    constructor() {}
    money() { console.log(100)}
}

class Son extends Father {

}

var son = new Son ()
son.money()         //继承父类的 money方法 输出100
class Father {
    constructor(x, y) {
        this.x = x;
        this.y = y;
    }
    money() {
        console.log(this.x + this.y)
    }
    say() {
        return "我是爸爸"
    }
}

class Son extends Father {
    constructor(x, y) {
        super(x, y)         //调用了父类中的构造函数
    }
    say(){
        console.log(super.say() + 'de儿子')     //调用父类的普通函数
    }
}

var son = new Son (2, 4)
son.money()         //6
son.say()       //我是爸爸de儿子

/* 
子类调用继承的 money() 中的this 是指向父类
要用 super() 将参数传递给父类 再调用父类继承的 money()
*/

  super 关键字 用于访问和调用对象父类上的函数。可以调用父类的构造函数,也可以调用父类的普通函数
  如果有就先执行2.继承中,如果子类里面没有,就去查找父类有没有这个方法,如果有,就执行父类的这个方法(就近原则)

你可能感兴趣的:(ES6)