что делает метод push для js объекта?

189
05 июля 2018, 03:00
 <!-- Определяем объект "Пользовательская информация" -->
var userData = {
  login: formElements.login.value,
  password: formElements.password.value,
  typeOfTVShow: formElements.typeOfTVShow.value,
  tvShows: [],
  isCinemaddict: formElements.isCinemaddict.value,
  comment: formElements.comment.value
};
 <!-- В переменную var получаем значение, которе лежит в local storage по указанному ключу, в нашем случаем result-->
var results = localStorage.getItem('results') || "[]";
 <!-- JSON - текстовый формат данных, основанный на JavaScript. JSON представляет объекты в виде строки -->
 <!-- Переданная строка results в формате JSON становится JavaScript объектом -->
results = JSON.parse(results);
 <!--??????????????????-->
results.push(userData);
Answer 1

Метод push - ничего не делает для объекта, потому по умолчанию у объектов нет такого метода.

Но, в данном случае, results - это массив. А, как говорится в справке:
push - добавляет элемент в конец массива.

что делается в этих строках

var results = localStorage.getItem('results') || "[]"; 
results = JSON.parse(results);

В первой строчке идет попытка получить занчение из localStorage, либо если его нет присвоить значение по умолчанию "[]"

Во второй - получение из строки, полученной на прошлом шаге, JavaScript объекта. И тут наступает небольшой диссонанс с предыдущими строками! Так как в них объект рассматривался как экземпляр класса Object. В данном же случае речь идет о Javascript значении, которое может быть как экземпляром класса Object, так и массивом, примитивом(строкой, числом) и т.д.

В данном случае, судя по значению по умолчанию ожидается именно массив. Хотя на самом деле в строке может оказаться что угодно. в том числе и невалидный JSON, и в этом случае функция parse выкинет исключение

READ ALSO
Валидация формы c использованием JS

Валидация формы c использованием JS

Пользователь загружает на сервер два файлаПервый- текстовый файл, второе-изображение

166
Как изменять картинку?

Как изменять картинку?

Допустим есть два Input (Дата добавления и дата удаления) если была заполнена только Дата добавления то стоит картинка виде галочки, а если еще...

211
Как реализовать событие при клике на одном из элементов с одинаковыми классами

Как реализовать событие при клике на одном из элементов с одинаковыми классами

Имеется несколько div c class='card'как реализовать в js, чтобы при нажатии на одном из элементов происходило событие какое-либо? Вот ниже моя реализация...

184