@whatislove

Как реализовать тип Vector?

ЗАДАЧА: Векторный тип

Напишите конструктор Vector, представляющий вектор в двумерном пространстве. Он принимает параметры x и y (числа), которые хранятся в одноимённых свойствах.
Дайте прототипу Vector два метода, plus и minus, которые принимают другой вектор в качестве параметра, и возвращают новый вектор, который хранит в x и y сумму или разность двух (один this, второй — аргумент)

console.log(new Vector(1, 2).plus(new Vector(2, 3)));
// → Vector{x: 3, y: 5}

КОД:
function Vector(x,y) {
  this.x = x;
  this.y = y;
}
Vector.prototype.plus = function(x,y) {
  var xx = this.x - x;
  var yy = this.y - y;
  return 'Vector: x= ' + xx + ' y=' + yy;
};
Vector.prototype.minus = function(x, y) {
  var xx = this.x - x;
  var yy = this.y - y;
  return 'Vector: x= ' - xx - ' y=' - yy;
};


ВОПРОС:
console.log(new Vector(1, 2).plus(new Vector(2, 3)));

Выдает "Vector: x= NaN y=NaN"

Подскажите пожалуйста в чем ошибка?! Спасибо большое!

P.S. Вот так все работает: console.log(new Vector(1, 2).plus(2, 3));
Выдает "Vector: x= -1 y=-1" т.е. все окей.
  • Вопрос задан
  • 2012 просмотров
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
function Vector(x, y) {
  this.x = x;
  this.y = y;
}
Vector.prototype.plus = function plus(otherVector) {
  var x = this.x + otherVector.x;
  var y = this.y + otherVector.y;
  return new Vector(x, y);
};
Vector.prototype.minus = function minus(otherVector) {
  var x = this.x - otherVector.x;
  var y = this.y - otherVector.y;
  return new Vector(x, y);
};
Vector.prototype.toString = function toString() {
  return 'Vector { x: ' + this.x + ', y: ' + this.y + ' }';
}

console.log(new Vector(1, 2).plus(new Vector(2, 3)));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Faliah
Примерно так:
function Vector(x,y) {
  this.x = x;
  this.y = y;
}
Vector.prototype.plus = function(otherVector) {
  var xx = this.x - otherVector.x;
  var yy = this.y - otherVector.y;
  return 'Vector: x= ' + xx + ' y=' + yy;
};
Vector.prototype.minus = function(otherVector) {
  var xx = this.x - otherVector.x;
  var yy = this.y - otherVector.y;
  return 'Vector: x= ' - xx - ' y=' - yy;
};

console.log(new Vector(1, 2).plus(new Vector(2, 3)));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы