// Объявление класса прямоугольника function Rectangle(x = 0, y = 0, w = 0, h = 0) { // Функция для проверки и возврата корректного значения function chkVal(val) { return Math.max(0, parseFloat(val) || 0); }; // Инициализация свойств let _x = chkVal(x); let _y = chkVal(y); let _w = chkVal(w); let _h = chkVal(h); // Геттеры и сеттеры this.X = function (val) { if (val === undefined) return _x; _x = chkVal(val); }; this.Y = function (val) { if (val === undefined) return _y; _y = chkVal(val); }; this.W = function (val) { if (val === undefined) return _w; _w = chkVal(val); }; this.H = function (val) { if (val === undefined) return _h; _h = chkVal(val); }; // Функция изменения параметров прямоугольника this.RectParam = function (_x, _y, _w, _h) { this.X(_x); this.Y(_y); this.W(_w); this.H(_h); }; //Функция изменения прямоугольника по другому прямоугольнику this.Rect = function (val) { if (val === undefined) return this; this.RectParam(val.X(), val.Y(), val.W(), val.H()); }; }