#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
что суперкласс присвоил свойству аргумент propsprops
.
Ответ №2:
Предварительные объявления полей — это просто самодокументация. Чтобы установить значение экземпляра, мы должны использовать метод конструктора во время создания экземпляра класса, как сказал @Tobiq.