类的基本知识

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>类的基本知识</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}`);
            }
        }

        //创建一个Student类,继承于Person类
        class Student extends Person {
            constructor(name,age,grade){
                super(name,age)
                this.grade = grade
                this.school = '尚硅谷'
            }
            //重写从父类继承过来的方法
            speak(){
                console.log(`我叫${this.name},我年龄是${this.age},我读的是${this.grade}年级`);
                this.study()
            }
            study(){
                //study方法放在了哪里?——类的原型对象上,供实例使用
                //通过Student实例调用study时,study中的this就是Student实例
                console.log('我很努力的学习');
            }
        }

        class Car {
            constructor(name,price){
                this.name = name
                this.price = price
                // this.wheel = 4
            }
            //类中可以直接写赋值语句,如下代码的含义是:给Car的实例对象添加一个属性,名为a,值为1
            a = 1
            wheel = 4
            static demo = 100
        }
        const c1 = new Car('奔驰c63',199)
        console.log(c1);
        console.log(Car.demo);
    </script>
</body>
</html>

类方法中的this指向

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>Document</title>
    </head>
    <body>
        <script type="text/javascript" >
            class Person {
                constructor(name,age){
                    this.name = name
                    this.age = age
                }
                study(){
                    //study方法放在了哪里?——类的原型对象上,供实例使用
                    //通过Person实例调用study时,study中的this就是Person实例
                    console.log(this);
                }
            }

            const p1 = new Person('tom',18)
            p1.study() //通过实例调用study方法
            const x = p1.study
            x()

        </script>
    </body>
</html>

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Scroll to Top