创建类
class name{
//class body
}
创建实例
var xx=new name();
类constructor()方法是类的构造函数,用于传递参数返回实例对象,通过new命令生成对象实例时,自动调用该方法,如果没有显示定义,类内部会自动给我们创建一个constantor()


创建方法:
<body>
<script >
//1.创建类class 创建一个明星类
class Star{
construtor(uname,uage){
this.uname=uname;
this.uage=uage;
}
//创建方法
sing(){
console.log('我唱歌');
}
}
//2.利用类创建对象new
var ldh=new Star('刘德华');
console.log(ldh);
//1.我们类里面所有的函数不需要写function
//2.多个函数方法之间不需要添加逗号分隔
ldh.sing('冰雨');
</script>
</body>
类的继承:
//1、类的继承
class Father{
constructor(){
}
money(){
console.log(100);
}
}
class Son extends Father{
}
var son=new Son();
son.money();
super关键字:
super关键字用于访问和调用对象父类上的函数,可以调用父类的构造函数,也可以调用父类的普通函数
<script >
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);//调用了父类中的构造函数
}
}
var son=new Son(1,2);
son.sum();
</script>
super关键字调用父类的普通函数
<script >
//super关键字调用父类普通函数
class Father{
say(){
return '我是爸爸';
}
}
class Son extends Father{
say(){
//console.log('我是儿子');
console.log(super.say()+'的儿子');
//super.say()就是调用父类中的普通函数say();
}
}
var son=new Son();
son.say();
//1、继承中的属性或者方法查找原则:就近原则
//2、继承中,如果实例化子类输出一个方法,先看子类有没有这个方法,如果有就先执行子类的
//3.继承中,如果在子类没有,就去查找父类有没有这个方法,如果有,就调用父类的这个方法
</script>
注意点:子类在构建函数中使用super,必须放在this前面(必须先调用父类的构造方法再使用子类的构造方法)

一定要记得加this:

constructor里面的this 指向 的是创建的实例对象
总结:
1.ES6中类没有变量提升,所以必须先定义类,才能通过类实例化对象
2.类里面的共有属性和方法一定要加this使用
3.类里面的this指向问题
4.constructor里面的this指向实例对象,方法的里面的this指向这个方法 的调用者
网友评论