Показать сообщение отдельно
  #3 (permalink)  
Старый 02.11.2016, 18:25
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,583

Ну и разумным шагом было бы превратить Calculator в конструктор:
function Calculator(firstNumber) {
  if(!(this instanceof Calculator)) return new Calculator(firstNumber);
  this.firstNumber = firstNumber;
}
Calculator.prototype = {
  sum: function() {
    let result = this.firstNumber;
    for(let i = 0; i < arguments.length; i++) {
      result += arguments[i];
    }
    return result;
  },
  dif: function() {
    let result = this.firstNumber;
    for(let i = 0; i < arguments.length; i++) {
      result -= arguments[i];
    }
    return result;
  },
  div: function() {

    let result = this.firstNumber;
    for(let i = 0; i < arguments.length; i++) {
      if (arguments[i] == 0) {
        throw new Error('Делитель равен нулю');
      } else {
        result /= arguments[i];
      }
    }
    return result;
  },
  mul: function() {
    let result = this.firstNumber;
    for(let i = 0; i < arguments.length; i++) {
      result *= arguments[i];
    }
    return result;
  },
}

module.exports = Calculator;
Разница с вашим вариантом(кроме исправления result) в том, что для каждого новосозданного объекта будут использованы одни и те же функции, без копирования, тогда как у вас каждый раз они создаются заново.

Но, опять же, использовать это имеет смысл, если вы проходили что такое прототипы.)

P.S. На счёт оптимальных первых двух задач - вопрос тонкий, ибо в современном js существуют нативные some и every.
__________________
29375, 35

Последний раз редактировалось Aetae, 02.11.2016 в 18:39.
Ответить с цитированием