c语言编程笔录

首页 >   > 笔记大全

笔记大全

无constructor的class类还能new吗

更新时间:2023-11-07

第一段:class类的基本介绍

在JavaScript中,class关键字是ES6新增的一种特殊语法,它提供了一种更加面向对象的编程方式。通过class关键字,我们可以创建类,并通过这个类来创建对象。在class中,我们可以定义实例方法、静态方法、实例属性和静态属性。

class Person {
  constructor(name) {
    this.name = name;
  }
  
  sayName() {
    console.log(this.name);
  }
  
  static sayHi() {
    console.log('Hi');
  }
  
  job = 'software engineer';
  
  static company = 'ABC Company';
}

const person = new Person('Tom');

person.sayName(); // Tom

Person.sayHi(); // Hi

console.log(person.job); // software engineer

console.log(Person.company); // ABC Company

第二段:constructor的作用

在class中,constructor是一个特殊的方法,它会在创建对象时被调用。我们可以在constructor方法中为对象初始化属性和方法。如果我们不定义constructor方法,JavaScript会默认为我们生成一个空的constructor方法。

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

const person = new Person('Tom');

person.sayName(); // Tom

第三段:无constructor的class类

如果我们不定义constructor方法,JavaScript会默认为我们创建一个空的constructor方法。在这个空的constructor方法中,虽然没有我们自己定义的内容,但是它仍然可以调用实例属性和方法。

class Person {
  name = 'Tom';
  
  sayName() {
    console.log(this.name);
  }
}

const person = new Person();

person.sayName(); // Tom

第四段:无constructor的class类的new操作

当我们创建一个无constructor的class类时,我们仍然可以通过new操作来创建对象。在这个过程中,JavaScript会为我们调用默认的constructor方法,并将实例属性和方法初始化。因此,无论是有constructor还是无constructor的class类,在new操作时,都可以创建对象。

class Person {
  name = 'Tom';
  
  sayName() {
    console.log(this.name);
  }
}

const person = new Person();

person.sayName(); // Tom

总结:

在JavaScript中,无constructor的class类仍然可以通过new操作创建对象,并且可以调用实例属性和方法。虽然我们没有为它定义constructor方法,但是JavaScript会为我们生成一个默认的constructor方法,并初始化实例属性和方法。因此,在使用class类时,我们既可以定义constructor方法,也可以不定义。这样,我们可以根据需要来决定是否为对象初始化属性和方法。