📜  TypeError:没有类构造函数模型无法调用 - Javascript (1)

📅  最后修改于: 2023-12-03 15:05:39.068000             🧑  作者: Mango

TypeError: Cannot call a class constructor without specifying the "new" keyword - JavaScript

在JavaScript中,当你没有使用new关键字来实例化一个类时,你将会遇到TypeError,该错误将会告诉你没有类构造函数模型(即类的实例)无法调用。

什么是构造函数?

在面向对象编程中,构造函数是一个类的特殊方法,用于创建和初始化该类的实例。在JavaScript中,构造函数是一个普通函数,但使用new关键字调用时,它将返回一个对象。

class Person {
  constructor(name) {
    this.name = name;
  }
}

const john = new Person('John');
console.log(john.name); // output: 'John'

在上面的示例中,Person是一个构造函数。它有一个参数name,用于初始化Person对象的name属性。我们使用new关键字来调用Person构造函数,并将其存储到john变量中。

使用new关键字创建类的实例

在JavaScript中,当你使用new关键字来调用类的构造函数时,它将返回一个新的对象。如果在调用构造函数时没有使用new关键字,则会出现TypeError错误。

class Person {
  constructor(name) {
    this.name = name;
  }
}

const john = Person('John'); // TypeError: Cannot call a class constructor without specifying the "new" keyword

在上面的示例中,我们尝试在不使用new关键字的情况下调用Person构造函数。这将导致TypeError错误,因为JavaScript不知道如何处理这种情况。

如何避免这种错误?

要避免这种错误,你需要始终使用new关键字来创建类的实例。这将告诉JavaScript要将构造函数作为一个类来处理,并返回一个对象。

class Person {
  constructor(name) {
    this.name = name;
  }
}

const john = new Person('John');
console.log(john.name); // output: 'John'

在上面的示例中,我们正确地使用了new关键字来创建Person类的实例,并将其存储在john变量中。现在,我们可以访问johnname属性,并将其输出到控制台。