es6中创建类
语法
class name{
//class body
}
- 通过class 关键字创建类,类名我们还是习惯定义首字母大写。
- 类里面有个constructor 函数,可以接受传递古来的参数,同时返回实例对象。
- constructor 函数 只要new生成实例时,就会 自动调用这个函数,如果我们不写constructor,类也会自动生成这个函数。
- 生成实例new不能省略
- 最后注意语法规范,创建类名后面不要小括号,生成实例类名后面要加小括号,构造函数不需要加function
class Start {
//类的共有属性放到construcvtor中
constructor(name,age){
this.name = name
this.age = age
}
sing(songName){
// alert()
console.log(`${this.name}唱${songName}`)
}
}
let ldh = new Start('刘德华',18);
let zxy = new Start('张学友',25);
ldh.sing('给我一杯忘情水')
zxy.sing('吻别')
extends关键词 继承父类的方法和属性
super关键字
super关键字 用于访问和调用对象上的函数。可以调用父类的构造函数,也可以调用父类的普通函数
class Father {
constructor(x,y){
this.x = x;
this.y = y;
}
sums(){
console.log(this.x+this.y)
}
}
//子类继承父类的方法
class Son extends Father{
constructor(x,y){
//super关键字可以调用父类的构造函数,也可以调用父类的普通函数
super(x,y)
}
}
let sonChildren = new Son(10,15);
sonChildren.sums()
- 继承中的属性或者方法查找原则:就近原则
- 继承中如果实例化子类输出一个方法,先看子类有没有这个方法,如果有就先执行子类
- 继承中,如果子类里面没有,就去查找父类有没有这个方法,如果有就执行父类的这个方法(就近原则)
super 可以调用父类的构造函数和 普通函数,子类也可以拓展自己的方法,但是调用super()必须放在子类构造函数的this之前
class Father {
constructor(x,y){
this.x = x;
this.y = y;
}
sums(){
console.log(this.x+this.y)
}
getmyname(){
return '我是父亲'
}
}
//子类继承父类的方法
class Son extends Father{
constructor(x,y){
//super关键字可以调用父类的构造函数,也可以调用父类的普通函数
//子类可以拓展自己的方法,但是要把super放在子类构造函数的第一位就是this之前,要不然要报错
super(x,y)
this.x = x;
this.y = y;
}
myname(){
//super 关键字调用父类的普通方法
return super.getmyname()
}
subnum(){
console.log(this.x - this.y)
}
}
let sonChildren = new Son(10,15);
console.log(sonChildren.myname())
sonChildren.subnum()
es6 中的类和对象三个注意点
1.在es6中类没有变量提升,所以必须先定义类,才能通过实例化对象
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。