Передача данных в класс [дубликат]

142
09 августа 2019, 05:10

На данный вопрос уже ответили:

  • Всплывают ли переменные, объявленные с помощью let и const в ES6? 1 ответ

сразу попрошу меня не ругать, пару дней, как перешёл на JS с C#. Много не понимаю, столкнулся с проблемой следующего рода, приложу код:

var verX = prompt("Введите координаты X вершин прямоугольника"); 
var verY = prompt("Введите координаты Y вершин прямоугольника"); 
verX = verX.split(','); 
verY = verY.split(','); 
var x1 = +verX[0], 
  x2 = +verX[1], 
  x3 = +verX[2], 
  x4 = +verX[3], 
  y1 = +verY[0], 
  y2 = +verY[1], 
  y3 = +verY[2], 
  y4 = +verY[3]; 
 
let rec = new Rectangle(x1, y1, x2, y2, x3, y3, x4, y4); 
rec.GetXpos(); 
rec.GetYpos(); 
document.write("<br />" + "Площадь прямоугольника= " + rec.GetSquare()); 
rec.GetAngle(); 
class Rectangle { 
  constructor(x1, y1, x2, y2, x3, y3, x4, y4) { 
    this.y1 = y1; 
    this.x1 = x1; 
    this.y2 = y2; 
    this.x2 = x2; 
    this.y3 = y3; 
    this.x3 = x3; 
    this.y4 = y4; 
    this.x4 = x4; 
  } 
  GetSquare() { 
    var s = 0; 
    s = (this.x2 - this.x1) * (this.y3 - this.y1) 
    return s; 
  } 
  GetXpos() { 
    document.write('<br/>' + "Координаты Х вершин прямоугольника: " + this.x1, "", this.x2, " ", this.x3, " ", this.x4); 
  } 
 
  GetYpos() { 
    document.write('<br/>' + "Координаты У вершин прямоугольника: " + this.y1, "", this.y2, " ", this.y3, " ", this.y4); 
  } 
  GetAngle() { 
    document.write('<br />' + "Угол прямоугольника равен: " + 90); 
  } 
 
}

Я думаю опытные( и не только) сразу поймут в чём моя ошибка и проблема. А проблема в данной строке: let rec=new Rectangle(x1,y1,x2,y2,x3,y3,x4,y4);

Uncaught ReferenceError: Rectangle is not defined,

Подскажите, как правильно передавать данные?)

Answer 1

Определения классов, в отличие от функций, не "всплывают".

class Rectangle { 
  constructor(x1, y1, x2, y2, x3, y3, x4, y4) { 
    this.y1 = y1; 
    this.x1 = x1; 
    this.y2 = y2; 
    this.x2 = x2; 
    this.y3 = y3; 
    this.x3 = x3; 
    this.y4 = y4; 
    this.x4 = x4; 
  } 
  GetSquare() { 
    var s = 0; 
    s = (this.x2 - this.x1) * (this.y3 - this.y1) 
    return s; 
  } 
  GetXpos() { 
    document.write('<br/>' + "Координаты Х вершин прямоугольника: " + this.x1, " ", this.x2, " ", this.x3, " ", this.x4); 
  } 
 
  GetYpos() { 
    document.write('<br/>' + "Координаты У вершин прямоугольника: " + this.y1, " ", this.y2, " ", this.y3, " ", this.y4); 
  } 
  GetAngle() { 
    document.write('<br />' + "Угол прямоугольника равен: " + 90); 
  } 
} 
 
var verX = "1,2,3,4"; //prompt("Введите координаты X вершин прямоугольника"); 
var verY = "1,2,3,4"; //prompt("Введите координаты Y вершин прямоугольника"); 
var verX = verX.split(','); 
var verY = verY.split(','); 
var x1 = +verX[0], 
  x2 = +verX[1], 
  x3 = +verX[2], 
  x4 = +verX[3], 
  y1 = +verY[0], 
  y2 = +verY[1], 
  y3 = +verY[2], 
  y4 = +verY[3]; 
 
let rec = new Rectangle(x1, y1, x2, y2, x3, y3, x4, y4); 
rec.GetXpos(); 
rec.GetYpos(); 
document.write("<br />" + "Площадь прямоугольника= " + rec.GetSquare()); 
rec.GetAngle();

READ ALSO
Extjs loadmask + store.filter

Extjs loadmask + store.filter

Имеется текстовое поле, в которое вводится значение, по которому фильтруется store, тк

140
D3 не хочет перерисовывать

D3 не хочет перерисовывать

Друзья, помогите пожалуйста!

121
Включить клик js в ссылку

Включить клик js в ссылку

На одной странице сайта есть ссылка-спойлер, то есть при клике на нее под ней появляется блок: с помощью js кода идет подмена стиля с display:none...

129