类的基本知识 js

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script type="text/javascript">
    // 类里面分为属性和方法
    // 创建一个 Person 类
    class Person {
      // 构造器方法
      constructor(name, age) {
        // 构造器中的 this 是谁? 类的实例对象
        this.name = name
        this.age = age
      }

      // 一般方法
      speak() {
        // speak 方法放在了哪里呢? 类的原型对象上,供实例使用
        // 通过 Person 实例调用 speak 时, speak 中的 this 就是 Person 实例
        console.log(`我叫${this.name},我的年龄是${this.age}`)
      }

    }

    // 创建一个 Person 的实例对象
    const p1 = new Person('tom', 18)
    const p2 = new Person('jerry', 19)
    console.log(p1, p2)

    p1.speak()
    p2.speak()

    p1.speak.call({name: 1, age: 2})

    // 创建一个 Student 类,继承 Person 类
    class Student extends Person {
      constructor(name, age, grade) {
        // super 必须放在最开始调用
        super(name, age)
        this.grade = grade
      }

      speak() {
        console.log(`我叫${this.name},我的年龄是${this.age},我是${this.grade}年级`)
      }

      study() {
        console.log('我学习~')
      }
    }

    const s1 = new Student("小张", 15, '高一')
    console.log(s1)
    s1.speak() // 假如 Student 没有speak,会往原型链上去找,调用 Person 的speak
    s1.study()


    /* 
    总结:
      1.类中的构造器不是必须写的,要对实例进行初始化操作,如添加属性
      2.如果A类继承了B类,且 A 类中写了构造器,那么 A 类构造器的 super 是必须调用的
      3.类中所定义的方法,都是放在了类的原型对象上,供实例去使用
    */
  </script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值