📜  没有 new 就不能调用类构造函数 (1)

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

没有 new 就不能调用类构造函数

在面向对象的编程中,类构造函数是非常重要的一个概念,它在实例化对象时被调用,用来初始化对象的属性和方法。在 JavaScript 中,我们也可以通过定义类构造函数来创建类,并将其实例化为对象。

然而,如果没有使用 new 关键字,就不能调用类构造函数,从而无法创建对象。下面我们来看一个示例:

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

const person = Person('Tom');

console.log(person); // undefined
console.log(name); // Tom

在这个示例中,我们定义了一个 Person 类,它有一个构造函数用来初始化 name 属性。然后我们尝试去实例化一个 person 对象,但是没有使用 new 关键字,而是直接调用了 Person 类,导致 person 的值为 undefined,并且 name 变量也被创建到了全局作用域中。

这是因为没有使用 new 关键字,构造函数无法创建新的对象,而是将属性和方法直接绑定到全局对象上。因此,在创建对象时必须使用 new 关键字。

下面是修改后的代码片段:

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

const person = new Person('Tom');

console.log(person); // Person { name: 'Tom' }
console.log(person.name); // Tom

在这个示例中,我们使用了 new 关键字来创建对象,使得构造函数能够正确地初始化属性,从而创建了一个正确的对象。

总之,没有 new 就不能调用类构造函数。因此,在定义和使用类时,务必记得使用 new 关键字来创建对象。