Нужно создать объект описывающий прямоугольник двумя точками(верхний левый и правый нижний угол). Далее нужно написать функцию, которая принимает обьект прямоугольник и возражает его сторону , далее нужно написать функцию которая принимает обьект прямоугольник и на сколько изменить его ширину
let rectangle = {
x1: 0,
y1: 10,
x2: 10,
y2: 2,
};
rectangle.returnWeight = function(){
let weight = Math.abs(this.x2) - Math.abs(this.x1);
alert(`Ширина прямоугольника равна ${weight}`);
return weight;
};
//Метод для определения ширины
rectangle.changeWeight = function(parametr){
let newWeight = (Math.abs(this.x2) - Math.abs(this.x1)) + parametr;
alert(`Ширина прямоугольника была = ${weight} , а стала = ${newWeight}`);
return newWeight;
};
Как написать метод который изменяет ширину . У меня возникла проблема , новый метод changeWeight не видит переменную из метода weight. Конечно можно сделать метод таким образом что я просто как в методе returnWeight измеряю ширину текущего прямоугольника , а затем просто добавляю параметр к этой ширине. Но мне интересно как это можно сделать ещё. Можно ли получить доступ к этой переменной weight или может стоит инициализировать эту переменную в самом объекте , а в методе просто её взять
Я решил сделать так
rectangle.changeWeight = function(parametr){
this.x2 += parametr;
let newWeight = Math.abs(this.x2) - Math.abs(this.x1);
alert(`Новая ширина прямоугольника ${newWeight}`);
return newWeight;
};
объедините все в один объект - удобно читать и есть общая область видимости:
const rect = {
_x: [],
_y: [],
getWidth: function () {
return this._x[1] - this._x[0]
},
setCoord: function (coordinate) {
const {x,y} = coordinate;
this._x = x.sort()
this._y = y.sort()
},
setWidth: function (width) {
this._x[1] = this._x[0] + Math.abs(width);
}
}
Добавить метод установки координат показалось логичным, но вы можете изменить пример под свой вариант использования. Проверим работоспособность:
rect.setCoord({x: [5,2], y: [7,15]});
console.log(rect.getWidth()); //3
rect.setWidth(5);
console.log(rect.getWidth()); //5
rect.setCoord({x: [-10, 3], y: [2,12]});
console.log(rect.getWidth()); //13
rect.setWidth(8);
console.log(rect.getWidth()); //8
rect.setCoord({x: [5, 3], y: [-2,12]});
console.log(rect.getWidth()); //2
rect.setWidth(4);
console.log(rect.getWidth()); //4
alert(`Ширина прямоугольника была = ${this.returnWeight()} , а стала = ${newWeight}`);
Но лучше в методах ничего не алертить. Сделай так чтоб методы просто возвращали значения
rectangle.returnWeight = function(){
return Math.abs(this.x2) - Math.abs(this.x1);
};
//Метод для определения ширины
rectangle.changeWeight = function(parametr){
return (Math.abs(this.x2) - Math.abs(this.x1)) + parametr;
};
alert(`Ширина прямоугольника была = ${rectangle.returnWeight()} , а стала = ${rectangle.changeWeight()}`);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Нужна помощь с реализацией такой вот задачи - функция должна принять массив функций и соединить их в цепочку наследования, после чего новый...
Доброе утроНадо срочно разобраться в коде, а JavaScript только начинаю изучать
Есть два AJAX скрипта, один добавляет в БД, другой выводит из БД, они оба работают