параметры конструктора в javascript

#javascript #ecmascript-6 #ecmascript-next

#javascript #ecmascript-6 #ecmascript-следующий

Вопрос:

Я пытаюсь узнать о конструкторах в javascript. Я смотрел какой-то учебник, где этот конструктор:

 class Human{
    constructor() {
      this.gender = 'male'

    }
    printGender(){
      console.log(this.gender);
    }
  }
 

был также написан с более коротким синтаксисом, который выглядел следующим образом:

 class Human{
    gender = 'male';

    printGender = () =>{
      console.log(this.gender);
    }
  }
 

У меня нет проблем с пониманием этого. Однако что делать, если у меня есть какие-то параметры? Вот так, например:

 class Human{
    constructor(gender, height) {
      this.gender = gender;
      this.height = height;

    }
    printGender(){
      console.log(this.gender);
    }
  }
 

Как мне написать этот более короткий синтаксис, а также иметь параметры? Я ничего не смог найти по этому вопросу. Какая-нибудь помощь?

Комментарии:

1. Пожалуйста, избегайте термина «ES7» в этом контексте. ES7 вышел в 2016 году и не включает в себя эти функции. Это всего лишь экспериментальные предложения.

2. Нет проблем, замените его экспериментальными предложениями

3. Если то, что вы читали, относилось к этому синтаксису как «ES7», вам, вероятно, следует прекратить его чтение и найти другой источник. Это часть предложения TC39, которое в настоящее время выполняется .

4. Большое спасибо за руководство. Очень признателен!

Ответ №1:

Код, который вы написали, был бы приемлемым.

Вы могли бы дополнительно сделать:

 class Human {
    gender;
    height;

    constructor(gender, height) {
      this.gender = gender;
      this.height = height;

    }
    printGender(){
      console.log(this.gender);
    }
  }
 

Комментарии:

1. Спасибо, но мой вопрос в том, как я могу сделать это без конструктора, как во втором примере, но с параметрами.

2. Вы не можете… Это единственный способ получить аргументы вашего конструктора. Если только у вас нет суперкласса, который задает аргумент свойству — т. Е. Внутри a React.Component , который вы можете использовать this.props в своем подклассе для установки свойства, потому Component что суперкласс присвоил свойству аргумент props props .

Ответ №2:

Предварительные объявления полей — это просто самодокументация. Чтобы установить значение экземпляра, мы должны использовать метод конструктора во время создания экземпляра класса, как сказал @Tobiq.