Evan's blog Evan's blog
首页
关于
  • 分类
  • 标签
  • 归档
  • H5&CSS3
  • JS
  • TS
  • Node
  • Webpack
  • Vue2
  • Vue3
  • 微信小程序
  • Andorid
  • Flutter
推荐
GitHub (opens new window)

conanan

真相只有一个
首页
关于
  • 分类
  • 标签
  • 归档
  • H5&CSS3
  • JS
  • TS
  • Node
  • Webpack
  • Vue2
  • Vue3
  • 微信小程序
  • Andorid
  • Flutter
推荐
GitHub (opens new window)
  • 入门

  • 理解

  • 语法

    • 2 语法-1 基础语法
    • 2 语法-1 ES6
    • 2 语法-2 Function
    • 3 标准内置对象-1 Object
    • 3 标准内置对象-2 String
    • 3 标准内置对象-3 Array
    • 3 标准内置对象-4 RegExp
    • 3 标准内置对象-5 Number
    • 3 标准内置对象-6 Math
    • 3 标准内置对象-7 Date
    • 3 标准内置对象-8 JSON
    • 3 标准内置对象-9 Set
    • 3 标准内置对象-10 Map
    • 4 面向对象
      • class
      • extends
      • 成员变量 ⚠️
      • 静态成员 ⚠️
      • 私有成员 ⚠️
    • 5 异常
  • 异步

  • 模块化

  • 网络

  • DOM&BOM

  • 常用框架

  • JS
  • 语法
xugaoyi
1984-01-24
目录

4 面向对象

# 面向对象

只是语法糖,内部还是使用 Prototype 实现

# class

class Emp {
  // 构造函数
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  // 普通方法
  signIn() {
    console.log(this.name + "打卡上班");
  }
  // 属性的 getter setter,实际调用属性不是方法
  get info() {
    return this.name + " " + this.age;
  }

  set info(info) {
    let [name, age] = info.split(" ");
    this.name = name;
    this.age = age;
  }
}
var emp = new Emp("conan", 11);

console.log(emp); // Emp {name: "conan", age: 11}
emp.signIn(); // conan打卡上班
console.log(emp.info); // conan 11
emp.info = "lan 18";
console.log(emp.info); // lan 18

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

# extends

class Emp {
  // 构造函数
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  // 普通方法
  signIn() {
    console.log(this.name + "打卡上班");
  }
  // 属性的 getter setter,实际调用属性不是方法
  get info() {
    return this.name + " " + this.age;
  }

  set info(info) {
    let [name, age] = info.split(" ");
    this.name = name;
    this.age = age;
  }
}

// 只能单继承
class Manager extends Emp {
  constructor(name, age, dept) {
    super(name, age);
    this.dept = dept;
  }

  signIn() {
    super.signIn();
    console.log("经理主持会议");
  }
}

// var manager = new Manager("kid", 20);// 不建议在子类没有构造函数时这样调用,应给子类添加构造函数
var manager = new Manager("kid", 20, "技术部"); // 不建议在子类没有构造函数时这样调用,应给子类添加构造函数
console.log(manager); // Manager {name: "kid", age: 20, dept: "技术部"}
manager.signIn();
// kid打卡上班
// 经理主持会议
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

# 成员变量 ⚠️

还没发布,只有部分浏览器支持,或使用babel转换

class Employee {
  company = "qq";
  constructor(name) {
    this.name = "hello" + name;
  }
}
var emp = new Employee("conan");
console.log(emp.company); // qq
console.log(new Employee("haha").company); // qq
1
2
3
4
5
6
7
8
9

# 静态成员 ⚠️

还没发布,只有部分浏览器支持,或使用babel转换

只能通过类来调用

class Ticket {
  static count = 0;
  constructor(name) {
    this.name = name + "卖票了";
  }
}
var t1 = new Ticket("conan");
Ticket.count++;
console.log(Ticket.count);
1
2
3
4
5
6
7
8
9

# 私有成员 ⚠️

略

编辑 (opens new window)
上次更新: 2022/03/23, 17:55:39
3 标准内置对象-10 Map
5 异常

← 3 标准内置对象-10 Map 5 异常→

最近更新
01
重点
04-12
02
搭建项目
04-04
03
TS补充
03-30
更多文章>
Theme by Vdoing | Copyright © 2019-2022 conanan | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式