Skip to content
Spotify - 每月低于 10 元

第7章 面向对象

定义 class

js
class People {
  constructor(name, position) {
    this.name = name;
    this.position = position;
  }
  signIn() {
    console.log(this.name + '打卡');
  }
  get info() {
    return this.name + ' ' + this.position;
  }

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

let zhangsan = new People('张三', 'CEO');
zhangsan.signIn(); // 张三打卡

// getters
console.log(zhangsan.info); // 张三 CEO

// setters
zhangsan.info = '李四 CFO';
console.log(zhangsan.info); // 李四 CFO

继承

  • 继承使用 extends 关键字
  • 通过 super 可以调用父类的属性和方法
js
class Animal {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  run() {
    console.log(this.name + '跑');
  }
}

class Bird extends Animal {
  // 添加属性
  constructor(name, age, sex) {
    super(name, age);
    this.sex = sex;
  }

  // 重写成员方法
  run() {
    super.run();
    console.log(this.name + '跑快了还能飞');
  }
}

let shizuniao = new Bird('始祖鸟', 9999, '公');
console.log(shizuniao); // Bird { name: '始祖鸟', age: 9999, sex: '公' }
shizuniao.run(); // 始祖鸟飞 | 始祖鸟跑快了还能飞

成员变量

js
// 类里面定义的变量
class People {
  name = '';
}
let zhangsan = new People();
console.log(zhangsan.name); // ""
zhangsan.name = '张三';
console.log(zhangsan.name); // 张三

静态成员变量

  • 静态成员变量只能通过 class 自身访问,实例无法访问
js
class Page {
  static count = 0;
  static increaseViewCount() {
    Page.count++;
  }
}
Page.count++;
console.log(Page.count); // 1
Page.increaseViewCount();
console.log(Page.count); // 2
关注微信公众号搬瓦工 - 美国 CN2 优化线路
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0

预览:

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3