创建类

  • 通过class关键字创建类,类名习惯性定义为首字母大写

  • 类中有constructor函数,可以接收传递过来的参数,同时可以返回实例对象

  • constructor函数只要new生成实例时就会自动调用这个函数,如果我们不写这个函数,类也会自动生成这个函数

  • 生成实例new不能省略

  • ps:

  1. 创建类时,类名后面不要加小括号;

  2. 生成实例时,类名后添加小括号;

  3. 构造函数不需要加function

<script>
    class Web {
        constructor(webName, age) {
            this.webName = webName;
            this.age = age;
        }
    }
    var dotaoke = new Web('ToDo Blog', 1);
    console.log(dotaoke)
</script>

类中添加方法

  • 类中所有的函数不需要写function

  • 多个函数或方法之间不需要添加

<script>
    class Web {
        constructor(webName, age) {
            this.webName = webName;
            this.age = age;
        }
        domain() {
            console.log("www.dotaoke.cn")
        }
    }
    var dotaoke = new Web('ToDo Blog', 1);
    console.log(dotaoke)
    dotaoke.domain();
</script>

类的继承

<script>
    class Father {
        constructor() {
    
        }
        money() {
            console.log(1000);
        }
    }
    class Son extends Father {
    
    }
    
    var son = new Son();
    son.money();
</script>

super关键字

super关键字用于访问和调用对象父类上的函数。可以调用父类的构造函数,也可以调用父类的普通函数。

继承中,如果实例化子类输出一个方法,先看子类有没有这个方法,如果有就先执行子类中定义的方法。

继承中,如果子类没有定义,就去查找父类中有没有这个方法,如果有就执行这个方法。

<script>
    class Father {
        constructor(x, y) {
            this.x = x;
            this.y = y;
        }
        sum() {
            console.log(this.x + this.y);
        }
    }
    class Son extends Father {
        constructor(x, y) {
            //调用了父类中的构造函数
            super(x, y);
        }
    }
    var son = new Son(1, 2);
    son.sum();
</script>

ES6中类和对象使用要点

  • 在ES6中类没有变量提升,所以必须先定义类,才能通过类实例化对象。

  • 类中共有的属性和方法一定要加this使用。

  • constructor里面的this指向实例对象。

  • 方法里的this指向这个方法的调用者。

  • that里面存储的是constructor里面的this

上一篇:可变不可变类型

下一篇:DOM相关概念