前端面试题 - 15. 类的变量初始化和constructor初始化有什么区别?

104 阅读1分钟

类的变量初始化和 constructor 初始化的区别如下:

  1. 变量初始化是在类中定义变量的同时对其进行初始化赋值,可以对变量进行默认赋值,如下所示:

    typescriptCopy code
    class MyClass {
      variable: number = 0; // 对变量进行默认赋值
    }
    
  2. constructor 初始化是在类实例化时,通过 constructor 函数对类成员进行初始化赋值,可以根据实例化时传入的参数进行赋值初始化,如下所示:

    typescriptCopy code
    class MyClass {
      variable: number;
      constructor(value: number) {
        this.variable = value; // 根据参数进行赋值初始化
      }
    }
    

    在 constructor 中也可以对变量进行默认赋值,但是如果变量已经在类中进行了初始化赋值,将会被 constructor 中的赋值覆盖。

  3. 变量初始化是类成员的一部分,会在类的实例化之前进行初始化;而 constructor 初始化是实例化过程中对类成员进行初始化的一部分。

  4. 变量初始化可以在类中的任何位置进行,而 constructor 初始化只能在 constructor 函数中进行。 总之,变量初始化和 constructor 初始化都可以用来对类成员进行初始化赋值,但是二者的使用场景不同,变量初始化更适用于对类成员进行默认赋值,而 constructor 初始化更适用于根据实例化时传入的参数进行赋值初始化。