Содержание

  1. Объекты
    1. Объекты как ассоциативные массивы
      1. Свойства
      2. Изменение свойств
      3. Неопределенные свойства
      4. Строки как индексы
      5. Сокращенная запись
      6. Проверка наличия свойства
      7. Перечисление свойств
    2. Наследование
      1. Создание объектов (Object.create)
      2. Получение прототипа (Object.getPrototypeOf)
      3. Наследование свойств
      4. Переопределение свойств
      5. Удаление свойств
    3. Методы
      1. Функции в свойствах
      2. Наследование функций
      3. Aliasing
      4. Неявная передача this
      5. Явная передача this
    4. Конструкторы
      1. Фабрики
      2. Конструкторы
      3. Прототипы в конструкторах
      4. Явное создание объекта и вызов конструктора
      5. Получение конструктора
  2. Замыкания
    1. Хранение состояния в замыкании
    2. Замыкание изменяемых переменных
    3. Трюк с объявлением промежуточной функции
    4. Общее состояние нескольких функций
  3. Модули
    1. Определение модуля
      1. Определение конструкторов
      2. Определение функций
    2. Использования модуля
      1. Прямое использование
      2. Импортирование
      3. Переменные класса

Домашнее задание 10. Объектные выражения на JavaScript

Объектные выражения на JavaScript
  1. Разработайте классы Const, Variable, Add, Subtract, Multiply, Divide, Negate для представления выражений с одной переменной.
    1. Пример описания выражения 2x-3:
                              var expr = new Subtract(
                                  new Multiply(
                                      new Const(2),
                                      new Variable("x")
                                  ),
                                  new Const(3)
                              );
                          
    2. Метод evaluate(x) должен производить вычисления вида: При вычислении такого выражения вместо каждой переменной подставляется значение x, переданное в качестве параметра функции evaluate (на данном этапе имена переменных игнорируются). Таким образом, результатом вычисления приведенного примера должно стать число 7.
    3. Метод toString() должен выдавать запись выражения в обратной польской записи. Например, expr.toString() должен выдавать 2 x * 3 -.
  2. Усложненный вариант.
    Метод diff("x") должен возвращать выражение, представляющее производную исходного выражения по переменной x. Например, expr.diff("x") должен возвращать выражение, эквивалентное new Const(2) (выражения new Subtract(new Const(2), new Const(0)) и
                        new Subtract(
                            new Add(
                                new Multiply(new Const(0), new Variable("x")),
                                new Multiply(new Const(2), new Const(1))
                            )
                            new Const(0)
                        )
                     
    так же будут считаться правильным ответом).

    Функция parse должна выдавать разобранное объектное выражение.

  3. Бонусный вариант. Требуется написать метод simplify(), производящий вычисления константных выражений. Например,
    parse("x x 2 - * 1 *").diff("x").simplify().toString()
    должно возвращать «x x 2 - +».
  4. При выполнение задания следует обратить внимание на:
    • Применение инкапсуляции.
    • Выделение общего кода для операций.