![正在学习,请勿打扰](https://i-blog.csdnimg.cn/blog_migrate/9d902008e9b99dbadc9ab4ba3a021c04.gif)
1.面向对象-定义class
class Employee {
constructor(name,position) { //带参的构造函数
this.name = name;
this.position = position;
}
}
var emp = new Employee("小明","前端工程师"); //申明一个Employee类的实例对象
console.log(emp);
2.面向对象-成员方法
class Employee {
constructor(name,position) { //带参的构造函数
this.name = name;
this.position = position;
}
signIn() { //定义成员方法:打卡上班
console.log(this.name + "打卡上班");
}
get info() { //使用get关键字定义获取属性方法
return this.name + " " + this.position;
}
set info(info) { //使用set关键字定义修改属性方法
let [name,position] = info.split(" ");
this.name = name;
this.position = position;
}
}
var emp = new Employee("小明","前端工程师"); //申明一个Employee类的实例对象
console.log(emp);
emp.signIn(); //调用成员方法
console.log(emp.info); //调用get类型的info方法
emp.info = "李四 后端工程师"; //调用set类型的info方法
console.log(emp.info); //调用get类型的info方法
console.log(emp.name , emp.position);
3.面向对象-实现继承
实现继承用到关键字extends
,例如a extends b
,a就叫做子类,b就是父类。一个子类只能继承一个父类。
在上面代码的基础上:
class Manager extends Employee {
constructor(name,position,dept) { //字类自己的构造方法
super(name,position); //super关键字表示调用父类中的构造方法来进行初始化
this.dept = dept; //剩余的dept在字类构造方法中单独初始化
}
signIn() {
super.signIn(); //调用父类中的signIn方法打卡上班
console.log("额外信息:经理打卡");
}
}
var manager = new Manager("王五","经理","技术部");
console.log(manager);
manager.signIn();
// manager.dept = "技术部"; //增加一个属性,但是写法不规范
// console.log(manager);
4.面向对象-成员变量
class Employee {
dept = ""; //定义成员变量为空,因为每个成员变量的值不同,所以只能设为空
constructor (name) {
this.name = "员工姓名:" + name; //变量放在构造函数里面更方便初始化
}
}
var emp = new Employee("小明");
console.log(emp);
emp.dept = "技术部"; //自定义设置成员变量
console.log(emp);
5.面向对象-静态成员(方法)
访问静态(static
)成员变量只能用类名.变量名
来访问。可以解决一些变量命名重复的问题。
class Page {
static count = 0; //定义静态成员变量
static increaseViewCount() { //定义静态成员方法
Page.count ++;
}
}
Page.count ++; //获取静态成员变量并+1
console.log(Page.count); //输出1
Page.increaseViewCount(); //调用静态成员方法
console.log(Page.count); //输出2