Работает
class Str {
constructor(lower,upper) {
this.lower = lower.toLowerCase();
this.upper = upper.toUpperCase();
}
}
let x = new Str('HALO','what');
x.lower; //halo
Ваш код this.lower = lower.toLowerCase();
не создает функцию.Это просто объявление переменной, которая содержит значение lower.toLowerCase()
.Вместо этого вы должны попробовать следующее
class Str {
constructor(lower,upper) {
this.lowerName = lower.toLowerCase();
this.upperName = upper.toUpperCase();
}
lower(input) {
return input.toLowerCase();
}
}
let y = Str.prototype.lower('WHAT'); //what
Если вы не создаете экземпляр Str
, в противном случае вызываете функцию lower
, как описано выше, потому что функция находится внутри prototype
из class
/ object
.Вы можете изобразить это как заимствование функции из Str
class
Другой способ, которым вы можете попробовать, как показано ниже:
class Str {
constructor(lower = "",upper="") {
this.lowerName = lower.toLowerCase();
this.upperName = upper.toUpperCase();
}
lower(input) {
return input.toLowerCase();
}
}
let strInstance = new Str();
console.log(strInstance.lower('WHY'));
Теперь приведенный выше код позволяет вам создать экземпляр Str
и вызватьфункция