ES6新定义(类的产生)

类的概念
可以通过类实例化一个具体的对象

  • 在ES6中,class (类)作为对象的模板被引入,可以通过 class 关键字定义类
  • 它不可重复声明
  • 类定义不会被提升,这意味着必须在访问前对类进行定义,否则就会报错

类的定义:ES6的类中不能直接定义变量,变量被定义在constructor中。constructor** 方法是类的默认方法,创建类的对象时被调用。也被称为类的构造方法(构造函数、构造器)。一个类中有且仅有一个构造方法。

class Exam {
	constructor(name) {
		this.name = name;
	}
}
let exam = new Exam("小王");
console.log(exam.name); //"小王"

实际调用类中的方法和属性与构造函数类似都是通过实例化对象.方法名对象.属性名

class Person {
	constructor(name,age) {
		this.name = name;
		this.age = age
	}
	sayHi() {
		console.log(this.name + " say hello world");
	}
	introduce() {
		console.log(this.name + "的工作是程序员", "今年" + this.age);
	}
}
let p = new Person("小王", 18);
console.log(p.name);
p.sayHi();
p.introduce();

结果如图:
在这里插入图片描述
这里在类中方法之间最好不要符号,因为若用逗号分隔就会使程序报错

类的继承

  • 解决代码的复用
  • 使用extends关键字实现继承
  • 子类可以继承父类中所有的方法和属性
  • 子类只能继承一个父类(单继承),一个父类可以有多个子类,但子类只能有一个父类
  • 子类的构造方法中必须有super()来指定调用父类的构造方法,并且位于子类构造方法中的第一行
  • 子类中如果有与父类相同的方法和属性,将会优先使用子类的(就近原则)
class Father {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }
    sayHi() {
        console.log(this.name + "说了你好哟");
    }
    about() {
        console.log(`${this.name}今年${this.age}了`);
    }
}
class Son extends Father {
    constructor(name,age) {
        super(name,age);
    }
}
let father = new Father("老王", 45);
father.sayHi(); //老王说了你好哟
father.about(); //老王今年45了
let son = new Son("小王", 18);
son.sayHi(); //小王说了你好哟
son.about(); //小王今年18了

注意到我们在super关键字传了关于儿子这个类的名字和属性,通过父类的属性和方法实现出来了,这就是继承的效果了。

我们可以简单的对类总结一下:

  1. 先定义类后实例化对象(new);
  2. 类里面的公共属性和方法一定要加this使用;
  3. constructor里this指向实例化对象,方法里this指向这个方法的调用者。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值