Можностей, предоставляемых веб-разработчикам


getItem ('twitter') ); // выводится "



Pdf көрінісі
бет217/232
Дата06.01.2022
өлшемі5,47 Mb.
#12231
1   ...   213   214   215   216   217   218   219   220   ...   232
getItem
('twitter') ); // выводится "@rem"
Стоит заметить, что метод 
getItem
 поддерживает только строковые данные. Это важно, по-
тому что при попытке сохранить объект в действительности сохраняется 
[Object
 
object]

Что еще важнее, в строки преобразуются даже числовые данные, и это нужно учитывать, 
чтобы избежать ошибок во время разработки.
Для того чтобы подчеркнуть важность этой особенности, приведу пример: предположим, 
Брюс на своем веб-сайте продает видеоролики с познавательными лекциями на разно-
образные научные темы. Заинтересовавшись вопросом синергизма, вы добавили в корзину 
несколько видео. Общая стоимость элементов в корзине — 12 долларов, и эта стоимость 
записывается в объект 
sessionStorage
. Когда вы заходите на страницу оформления за-
каза, Брюс добавляет еще 5 долларов в качестве оплаты за доставку. Как я уже говорил, 
сумма в 12 долларов уже сохранена в объекте 
sessionStorage
. Вот как мог бы выглядеть 
код преобразования:
sessionStorage.setItem('cost', 12);
// после добавления стоимости доставки сайт Брюса
// возвращает полную цену:
function costWithShipping(shipping) {
    alert(sessionStorage.getItem('cost') + shipping);
}


194  •  Глава 6
// потом отображается стоимость содержимого
// корзины с доставкой:
costWithShipping(5);
 
Если бы в 
sessionStorage
 было записано значение числового типа, то в окне результата 
вы увидели бы значение 17. Но сумма в 12 долларов была записана в виде строки. Так как 
в JavaScript для сложения и для соединения строк используется один и тот же метод (знак 
плюс), то JavaScript воспринимает эту операцию как присоединение числа к строке, поэтому 
в окне результата выводится значение 125 — намного больше реальной стоимости видео-
роликов Брюса! Происходящее за сценой называется приведением типов: любые данные, 
сохраняемые в API хранилища, приводятся к строковому типу.
Наконец, важно отметить, что если вызывать 
getItem
 с несуществующим ключом, то API 
вернет значение 
null
. Если вы собираетесь использовать API хранилища для инициализа-
ции значений, что вполне возможно, то перед продолжением всегда выполняйте проверку 
на 
null
. Попытавшись обработать 
null
 как объект любого другого типа, вы сами себе 
вставите огромные палки в колеса.


Достарыңызбен бөлісу:
1   ...   213   214   215   216   217   218   219   220   ...   232




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет