JackShcherbakov
@JackShcherbakov

Почему в этом коде нет ошибки?

Имеется:
Странно, но корректно работающий код
https://codepen.io/CitizenOne/pen/MOKYRJ (источник - очередная, большинству изучающих JS по этому учебнику непонятная, статья https://learn.javascript.ru/static-properties-and-... )
spoiler
function Journal(date) {
  this.date = date;

  this.formatDate = function(date) {
    return date.getDate() + '.' + (date.getMonth() + 1) + '.' + date.getFullYear();
  };

  this.getTitle = function() {
    return "Выпуск от " + this.formatDate(this.date);
  };

}

Journal.compare = function(journalA, journalB) {
  return journalA.date - journalB.date;
};

// использование:
var journals = [
  new Journal(new Date(2012, 1, 1)),
  new Journal(new Date(2012, 0, 1)),
  new Journal(new Date(2011, 11, 1))
];

function findMin(journals) {
  var min = 0;
  for (var i = 0; i < journals.length; i++) {
    // используем статический метод
    if (Journal.compare(journals[min], journals[i]) > 0) min = i;
  }
  return journals[min];
}
alert(findMin(journals));
 //По сути в строке ниже написано что-то вроде object Object.getTitle()
//alert( findMin(journals).getTitle() );


Непонимание:
  1. Функция Journal(date) (строка 1) ничего не возвращает и не создает никакого конструктора => почему в массиве journals (строка 19) мы пишем new перед функцией, хотя и без него работает
  2. В строке 33 я вызываю одно из значений массивы и получаю ничего не значущий object Object, однако основываясь на этом же массиве идет формат даты, как??? Как можно из object Object дату-то получить
  • Вопрос задан
  • 179 просмотров
Решения вопроса 1
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
1. Функция Journal(date) и является конструктором. В JS любая функция может им быть без дополнительных объявлений. Любая функция является объектом и возвращает объект, если в ней есть указания для его экземпляров через htis. Запутал?

2. Не понял.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 22:26
3500 руб./за проект
22 нояб. 2024, в 21:47
3000 руб./за проект
22 нояб. 2024, в 21:44
50000 руб./за проект