Вызов функции возвращает значение undefined

Я написал следующий код в javascript:

class Screen {  
  Screen(_width, _height){
    this.width=_width;
    this.height=_height;
  }
  diagonal() {
    return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2));
  }
  
  dimensions(definition) {
    var dimensions = definition.split('x')
    this.width = parseInt(dimensions[0]);
    this.height = parseInt(dimensions[1]);
  }
}

var screen = new Screen(0, 0);
screen.dimensions = '500x300';
screen.width = 400;
console.log(screen.diagonal); 

Когда я вызываю screen.diagonal, он не возвращает результат, и диагональная функция
не вызывается. В чем может быть причина этого?
В идеале вызов функции должен возвращать 500


person nidhi    schedule 21.05.2021    source источник
comment
Вы должны использовать () для вызова методов. screen.diagonal(). В противном случае используйте геттер вместо метода. То же самое касается настройки screen.dimensions.   -  person evolutionxbox    schedule 21.05.2021
comment
Отвечает ли это на ваш вопрос? JS-геттеры и сеттеры внутри класса?   -  person evolutionxbox    schedule 21.05.2021
comment
Это не то, как вы определяете конструктор в JS.   -  person Ivar    schedule 21.05.2021
comment
@Ивар прав. Screen(_width... должно быть constructor(_width...   -  person evolutionxbox    schedule 21.05.2021


Ответы (2)


Вы должны фактически вызывать функции, используя круглые скобки...

class Screen {  
  Screen(_width, _height){
    this.width=_width;
    this.height=_height;
  }
  diagonal() {
    return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2));
  }
  
  dimensions(definition) {
    var dimensions = definition.split('x')
    this.width = parseInt(dimensions[0]);
    this.height = parseInt(dimensions[1]);
  }
}

var screen = new Screen(0, 0);
screen.dimensions('500x300');
screen.width = 400;
console.log(screen.diagonal()); 

person dave    schedule 21.05.2021
comment
по какой-то причине я получаю NaN - person nidhi; 21.05.2021
comment
@nidhi Вы также заметили screen.dimensions('500x300')? - person Ivar; 21.05.2021
comment
Screen(_width, _height){, вероятно, должно быть constructor(_width, _height){, иначе screen.height будет undefined - person evolutionxbox; 21.05.2021

удалите кавычки вокруг параметра функции. т.е. ('500x300') должно быть (500x300).

person FikraOps    schedule 21.05.2021
comment
Почему? Это было бы синтаксической ошибкой. - person evolutionxbox; 21.05.2021